/*
* Copyright (c) 2007, Your Corporation. All Rights Reserved.
*/
package org.springmodules.email.dispatcher.emailsender;
import java.util.Date;
import javax.mail.internet.InternetAddress;
import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;
import org.springmodules.email.Email;
/**
* @author Uri Boness
*/
public class SimpleEmailSender implements EmailSender {
public void send(MailSender sender, Email email, String encoding) {
sender.send(generateSimpleMessage(email));
}
/**
* Generates a {@link org.springframework.mail.SimpleMailMessage} from the given email.
*
* @param email The given email.
* @return The newly generated {@link org.springframework.mail.SimpleMailMessage}.
*/
protected SimpleMailMessage generateSimpleMessage(Email email) {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(extractEmail(email.getFrom()));
message.setTo(extractEmails(email.getTo()));
message.setCc(extractEmails(email.getCc()));
message.setBcc(extractEmails(email.getBcc()));
if (email.getReplyTo() != null) {
message.setReplyTo(email.getReplyTo().getAddress());
}
// message.setSentDate(new Date());
message.setSubject(email.getSubject());
message.setText(email.getTextBody());
return message;
}
//============================================== Helper Methods ====================================================
/**
* Extracts the email addresses from the given addresses.
*
* @param addresses The addresses from which the emails will be extracted.
* @return The extracted email addresses.
*/
protected static String[] extractEmails(InternetAddress[] addresses) {
String[] emails = new String[addresses.length];
for (int i=0; i<addresses.length; i++) {
emails[i] = extractEmail(addresses[i]);
}
return emails;
}
/**
* Extracts a string representation of given address. If the personal property of the address is set the
* string representation will look like "Personal<email@host>", otherwise it will just return the
* plain address (i.e. "email@host").
*
* @param address The address from which the email will be extracted
* @return The string representation of the given email address
*/
protected static String extractEmail(InternetAddress address) {
if (address.getPersonal() != null) {
return address.getPersonal() + "<" + address.getAddress() + ">";
}
return address.getAddress();
}
}