| Method from org.quartz.jobs.ee.mail.SendMailJob Detail: |
protected SendMailJob.MailInfo createMailInfo() {
return new MailInfo();
}
|
public void execute(JobExecutionContext context) throws JobExecutionException {
/*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*
* Interface.
*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
JobDataMap data = context.getMergedJobDataMap();
MailInfo mailInfo = populateMailInfo(data, createMailInfo());
getLog().info("Sending message " + mailInfo);
try {
MimeMessage mimeMessage = prepareMimeMessage(mailInfo);
Transport.send(mimeMessage);
} catch (MessagingException e) {
throw new JobExecutionException("Unable to send mail: " + mailInfo,
e, false);
}
}
|
protected Log getLog() {
return log;
}
|
protected Session getMailSession(SendMailJob.MailInfo mailInfo) throws MessagingException {
Properties properties = new Properties();
properties.put("mail.smtp.host", mailInfo.getSmtpHost());
return Session.getDefaultInstance(properties, null);
}
|
protected String getOptionalParm(JobDataMap data,
String property) {
String value = data.getString(property);
if ((value != null) && (value.trim().length() == 0)) {
return null;
}
return value;
}
|
protected String getRequiredParm(JobDataMap data,
String property,
String constantName) {
String value = getOptionalParm(data, property);
if (value == null) {
throw new IllegalArgumentException(constantName + " not specified.");
}
return value;
}
|
protected SendMailJob.MailInfo populateMailInfo(JobDataMap data,
SendMailJob.MailInfo mailInfo) {
// Required parameters
mailInfo.setSmtpHost(getRequiredParm(data, PROP_SMTP_HOST, "PROP_SMTP_HOST"));
mailInfo.setTo(getRequiredParm(data, PROP_RECIPIENT, "PROP_RECIPIENT"));
mailInfo.setFrom(getRequiredParm(data, PROP_SENDER, "PROP_SENDER"));
mailInfo.setSubject(getRequiredParm(data, PROP_SUBJECT, "PROP_SUBJECT"));
mailInfo.setMessage(getRequiredParm(data, PROP_MESSAGE, "PROP_MESSAGE"));
// Optional parameters
mailInfo.setReplyTo(getOptionalParm(data, PROP_REPLY_TO));
mailInfo.setCc(getOptionalParm(data, PROP_CC_RECIPIENT));
mailInfo.setContentType(getOptionalParm(data, PROP_CONTENT_TYPE));
return mailInfo;
}
|
protected MimeMessage prepareMimeMessage(SendMailJob.MailInfo mailInfo) throws MessagingException {
Session session = getMailSession(mailInfo);
MimeMessage mimeMessage = new MimeMessage(session);
Address[] toAddresses = InternetAddress.parse(mailInfo.getTo());
mimeMessage.setRecipients(Message.RecipientType.TO, toAddresses);
if (mailInfo.getCc() != null) {
Address[] ccAddresses = InternetAddress.parse(mailInfo.getCc());
mimeMessage.setRecipients(Message.RecipientType.CC, ccAddresses);
}
mimeMessage.setFrom(new InternetAddress(mailInfo.getFrom()));
if (mailInfo.getReplyTo() != null) {
mimeMessage.setReplyTo(new InternetAddress[]{new InternetAddress(mailInfo.getReplyTo())});
}
mimeMessage.setSubject(mailInfo.getSubject());
mimeMessage.setSentDate(new Date());
setMimeMessageContent(mimeMessage, mailInfo);
return mimeMessage;
}
|
protected void setMimeMessageContent(MimeMessage mimeMessage,
SendMailJob.MailInfo mailInfo) throws MessagingException {
if (mailInfo.getContentType() == null) {
mimeMessage.setText(mailInfo.getMessage());
} else {
mimeMessage.setContent(mailInfo.getMessage(), mailInfo.getContentType());
}
}
|