package util;
import java.util.Properties;
import java.util.logging.Level;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import util.logger.LoggerManager;
/**
* Class used to send e-mails to recipients.
* @author Henrique Moraes
*
*/
public class MailSender implements IMail{
public static final String MAIL = "mail.smpt.host";
private String myFromAddress;
private String[] myToAddress;
private String myServerAddress;
private String mySubject = "No Subject";
private String myMessage;
/**
* Constructor
* @param from Address from which the e-mail is sent
* @param to String array with recipients to send e-mail to
* @param server Server address
* @param subject Subject of e-mail
* @param message Text in e-mail
*/
public MailSender(String from, String[] to,
String server, String subject, String message) {
setProperties(from,to,server,subject,message);
}
@Override
public void setProperties(String from, String[] to,
String server, String subject, String message) {
myFromAddress = from;
myToAddress = to;
myServerAddress = server;
mySubject = subject;
myMessage = message;
}
/**
* Sends an e-mail according to given information
* @param from Address from which the e-mail is sent
* @param to String array with recipients to send e-mail to
* @param server Server address
* @param subject Subject of e-mail
* @param message Text in e-mail
*/
public void sendMail(String from, String[] to,
String server, String subject, String message) {
setProperties(from,to,server,subject,message);
sendMail();
}
/**
* Sends an e-mail according to given information
* @param String containing message to send through e-mail
*/
public void sendMail(String message) {
myMessage = message;
sendMail();
}
/**
* Sends an e-mail according to given information
*/
public void sendMail() {
LoggerManager log = new LoggerManager();
try {
Properties properties = new Properties();
properties.put(MAIL, myServerAddress);
Session session =
Session.getDefaultInstance(properties, null);
session.setDebug(true);
Message mimeMsg = new MimeMessage(session);
Address from = new InternetAddress(myFromAddress);
mimeMsg.setFrom(from);
Address[] to = new InternetAddress[myToAddress.length];
for(int i = 0; i < myToAddress.length; i++)
to[i] = new InternetAddress(myToAddress[i]);
mimeMsg.setRecipients(Message.RecipientType.TO,to);
mimeMsg.setSubject(mySubject);
mimeMsg.setText(myMessage);
Transport.send(mimeMsg);
} catch (AddressException e) {
log.getLogger().log(Level.WARNING,"Error in choosing e-mail address\n"+e.toString());
} catch (MessagingException e) {
log.getLogger().log(Level.WARNING,"Error in creating e-mail message\n"+e.toString());
}
}
}