Định dạng địa chỉ e-mail Internet ( RFC 822
)
(,)
dãy địa chỉ được phân tách bằng dấu phẩy
javax.mail - 1.4.7 parse( String[] )
không được phép. Vì vậy, chúng ta phải cung cấp chuỗi địa chỉ được phân tách bằng dấu phẩy vào InternetAddress
các đối tượng. Địa chỉ phải tuân theo cú pháp RFC822.
String toAddress = "mail@mail.com,mail2@mail.com";
InternetAddress.parse( toAddress );
(;)
dãy địa chỉ được phân tách bằng dấu chấm phẩy «Nếu nhóm danh sách địa chỉ được cung cấp với dấu phân cách là"; " sau đó chuyển đổi sang mảng String bằng phương thức split để sử dụng hàm sau.
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 ) {
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse( (String) addresslist ));
} else if ( addresslist instanceof String[] ) {
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);
}
}
Ví dụ đầy đủ:
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);
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);
} else {
props.put("mail.smtps.ssl.enable", true);
props.put("mail.smtp.socketFactory.port", SMTP_SSL_PORT);
}
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();
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
Sử dụng Appache SimpleEmail
-commons-email-1.3.1
Thí dụ: 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 ... :-)");
String[] toAddressList = { "mail@mail.com", "mail2@mail.com" }
email.addTo( addressList );
email.setTLS(true);
email.setStartTLSEnabled( true );
email.send();
System.out.println("Mail sent!");
}