MailsenderImpl - gsnaidujava/pp GitHub Wiki
package com.firstdata.email.impl;
import java.util.Properties;
import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart;
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service;
import com.firstdata.email.model.EmailMessage;
@Service("mailSender") public class MailSenderImpl { Logger LOG = LoggerFactory.getLogger(MailSenderImpl.class);
@Value("${mail.smtp.user.name}") private String username; @Value("${mail.smtp.from.email}") private String fromEmail; @Value("${mail.smtp.password}") private String password; @Value("${mail.smtp.host}") private String host; @Value("${mail.smtp.port}") private String port; @Value("${mail.smtp.auth}") private String auth; @Value("${mail.smtp.starttls.enable}") private String enable;
public void send(EmailMessage emailMessage) { LOG.debug("MailSenderImpl started in send method.");
LOG.debug("mail.smtp.auth : " + auth); LOG.debug("mail.smtp.starttls.enable : " + enable); LOG.debug("mail.smtp.host : " + host); LOG.debug("mail.smtp.port : " + port); LOG.debug("mail.smtp.user.name : " + username); LOG.debug("mail.smtp.from.email : " + fromEmail);
Properties props = new Properties(); props.put("mail.smtp.auth", auth); props.put("mail.smtp.starttls.enable", enable); props.put("mail.smtp.host", host); props.put("mail.smtp.port", port);
// TODO : uncomment the below after getting the SMTP details.
Session session = Session.getInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } });
if (session != null) { try { Message message = new MimeMessage(session); message.setFrom(new InternetAddress(fromEmail)); message .setRecipients(Message.RecipientType.TO, InternetAddress .parse(emailMessage.getToEmailAddress())); message.setSubject(emailMessage.getSubject()); message.setText(emailMessage.getText());
Transport.send(message);
LOG.debug("Message Sent");
} catch (MessagingException e) { LOG.error("Message could not be sent : " + e.getMessage()); } }
LOG.debug("MailSenderImpl finished in send method."); }
public void send(EmailMessage emailMessage, String fileName, String fileAttachment) { LOG.debug("MailSenderImpl started in send method.");
Properties props = new Properties(); props.put("mail.smtp.auth", auth); props.put("mail.smtp.starttls.enable", enable); props.put("mail.smtp.host", host); props.put("mail.smtp.port", port);
// TODO : uncomment the below after getting the SMTP details.
Session session = Session.getInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } });
if (session != null) { try { Message message = new MimeMessage(session); message.setFrom(new InternetAddress(fromEmail)); message .setRecipients(Message.RecipientType.TO, InternetAddress .parse(emailMessage.getToEmailAddress())); message.setSubject(emailMessage.getSubject());
MimeBodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setText(emailMessage.getText()); Multipart multipart = new MimeMultipart(); multipart.addBodyPart(messageBodyPart); messageBodyPart = new MimeBodyPart(); DataSource source = new FileDataSource(fileAttachment); messageBodyPart.setDataHandler(new DataHandler(source)); messageBodyPart.setFileName(fileName); multipart.addBodyPart(messageBodyPart); // Put parts in message message.setContent(multipart);
Transport.send(message);
LOG.debug("Message Sent");
} catch (MessagingException e) { LOG.error("Message could not be sent : " + e.getMessage()); } }
LOG.debug("MailSenderImpl finished in send method."); } }