Format d'adresse électronique Internet ( RFC 822 ):
(,)
séquence d'adresses séparées par des virgules
javax.mail - 1.4.7 parse(String[])
n'est pas autorisé. Nous devons donc fournir une séquence d'adresses séparées par des virgules dans le format suivant InternetAddress
objets. Les adresses doivent respecter la syntaxe RFC822.
String toAddress = "mail@mail.com,mail2@mail.com";
InternetAddress.parse(toAddress);
(;)
séquence d'adresses séparées par des points-virgules " Si un groupe de listes d'adresses est fourni avec le délimiteur " ;", puis converti en un tableau de chaînes de caractères à l'aide de la fonction divisé pour utiliser la fonction suivante.
String[] addressList = { "mail@mail.com", "mail2@mail.com" };
String toGroup = "mail@mail.com;mail2@mail.com";
String[] addressList2 = toGroup.split(";");
setRecipients(message, addressList);
public static void setRecipients(Message message, Object addresslist) throws AddressException, MessagingException {
if (addresslist instanceof String) { // CharSequence
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse((String) addresslist));
} else if (addresslist instanceof String[]) { // String[] « Array with collection of Strings/
String[] toAddressList = (String[]) addresslist;
InternetAddress[] mailAddress_TO = new InternetAddress[ toAddressList.length ];
for (int i = 0; i < toAddressList.length; i++) {
mailAddress_TO[i] = new InternetAddress(toAddressList[i]);
}
message.setRecipients(Message.RecipientType.TO, mailAddress_TO);
}
}
Exemple complet
public static Properties getMailProperties(boolean addExteraProps) {
Properties props = new Properties();
props.put("mail.transport.protocol", MAIL_TRNSPORT_PROTOCOL);
props.put("mail.smtp.host", MAIL_SERVER_NAME);
props.put("mail.smtp.port", MAIL_PORT);
// Sending Email to the GMail SMTP server requires authentication and SSL.
props.put("mail.smtp.auth", true);
if(ENCRYPTION_METHOD.equals("STARTTLS")) {
props.put("mail.smtp.starttls.enable", true);
props.put("mail.smtp.socketFactory.port", SMTP_STARTTLS_PORT); // 587
} else {
props.put("mail.smtps.ssl.enable", true);
props.put("mail.smtp.socketFactory.port", SMTP_SSL_PORT); // 465
}
props.put("mail.smtp.socketFactory", SOCKETFACTORY_CLASS);
return props;
}
public static boolean sendMail(String subject, String contentType, String msg, Object recipients) throws Exception {
Properties props = getMailProperties(false);
Session mailSession = Session.getInstance(props, null);
mailSession.setDebug(true);
Message message = new MimeMessage(mailSession);
message.setFrom(new InternetAddress(USER_NAME));
setRecipients(message, recipients);
message.setSubject(subject);
String htmlData = "<h1>This is actual message embedded in HTML tags</h1>";
message.setContent(htmlData, "text/html");
Transport transport = mailSession.getTransport(MAIL_TRNSPORT_PROTOCOL);
transport.connect(MAIL_SERVER_NAME, Integer.valueOf(MAIL_PORT), USER_NAME, PASSWORD);
message.saveChanges(); // Don't forget this
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
Utilisation d'Appache SimpleEmail
- commons-email-1.3.1
Exemple : email.addTo(addressList);
public static void sendSimpleMail() throws Exception {
Email email = new SimpleEmail();
email.setSmtpPort(587);
DefaultAuthenticator defaultAuthenticator = new DefaultAuthenticator(USER_NAME, PASSWORD);
email.setAuthenticator(defaultAuthenticator);
email.setDebug(false);
email.setHostName(MAIL_SERVER_NAME);
email.setFrom(USER_NAME);
email.setSubject("Hi");
email.setMsg("This is a test mail... :-)");
//email.addTo("mail@mail.com", "Yash");
String[] toAddressList = { "mail@mail.com", "mail2@mail.com" }
email.addTo(addressList);
email.setTLS(true);
email.setStartTLSEnabled(true);
email.send();
System.out.println("Mail sent!");
}