Руководство Java Commons Email
View more Tutorials:

Commons Email это библиотека Java Apache связанная с e-mail . На самом деле чтобы работать с Java Email вы можете использовать JavaMail API интегрированный в JDK6. Commons Email просто помогает вам легче работать с JavaMail API, она не предназначена для замены JavaMail API.
Тоже самое что Commons IO не предназначен для замены JavaIO а просто включает в себя много классов, утилитарных методов, которые помогают вам работать с Java IO легче, сэкономит вам время для кодирования.

Maven:
** pom.xml **
<!-- http://mvnrepository.com/artifact/org.apache.commons/commons-email --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-email</artifactId> <version>1.3.2</version> </dependency>
See Also:
Создайте Maven Project чтобы тестировать примеры в этом документе. Вы можете создать обычный проект, затем скачать библиотеки и объявить их местоположения обычным способом.
Если вы используете Commons Email в обычном проекте, вам нужно скачать необходимые библиотеки, вы можете просмотреть в аппендиксе в конце статьи.



Это иллюстрация созданного проекта.

Объявить библиотеки, которые будут использованы в pom.xml
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.o7planning</groupId> <artifactId>CommonsEmailTutorial</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <!-- http://mvnrepository.com/artifact/org.apache.commons/commons-email --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-email</artifactId> <version>1.4</version> </dependency> </dependencies> </project>
Если ы хотите отправить email из приложения Java используя Gmail, вам нужно разрешить: менее безопасное приложение (Allow less secure apps):
На вашем бразере войдите в ваш Gmail, и перейдите по следующей ссылке:
Вы получите оповещение от Google:
Некоторые приложение и устройства используют менее безопасную технологию входа в систему, которая может сделать ваш аккаунт более уязвимым. Вы можете отключить (Turn Off) доступ для данных приложений, которые мы рекомендуем или включить (Turn On) доступ если вы хотите их использовать несмотря на риск.


Для начала - простой пример отправления Email с Commons-Email
Constants.java
package org.o7planning.tutorial.commonsemail; public class Constants { public static final String MY_EMAIL = "yourEmail@gmail.com"; public static final String MY_PASSWORD ="your password"; public static final String FRIEND_EMAIL = "friendEmail@gmail.com"; }
SimpleTextEmail.java
package org.o7planning.tutorial.commonsemail; import org.apache.commons.mail.DefaultAuthenticator; import org.apache.commons.mail.Email; import org.apache.commons.mail.SimpleEmail; public class SimpleTextEmail { public static void main(String[] args) { try { Email email = new SimpleEmail(); // Configuration email.setHostName("smtp.googlemail.com"); email.setSmtpPort(465); email.setAuthenticator(new DefaultAuthenticator(Constants.MY_EMAIL, Constants.MY_PASSWORD)); // Required for gmail email.setSSLOnConnect(true); // Sender email.setFrom(Constants.MY_EMAIL); // Email title email.setSubject("Test Email"); // Email message. email.setMsg("This is a test mail ... :-)"); // Receiver email.addTo(Constants.FRIEND_EMAIL); email.send(); System.out.println("Sent!!"); } catch (Exception e) { e.printStackTrace(); } } }
Результат запуска примера:

Пример отправки email с прикрепленным файлом на диске.
EmailWithAttachment.java
package org.o7planning.tutorial.commonsemail; import org.apache.commons.mail.DefaultAuthenticator; import org.apache.commons.mail.EmailAttachment; import org.apache.commons.mail.MultiPartEmail; public class EmailWithAttachment { public static void main(String[] args) { try { // Create the attachment EmailAttachment attachment = new EmailAttachment(); attachment.setPath("C:/mypictures/map-vietnam.png"); attachment.setDisposition(EmailAttachment.ATTACHMENT); attachment.setDescription("Vietnam Map"); attachment.setName("Map"); // Create the email message MultiPartEmail email = new MultiPartEmail(); // Configuration email.setHostName("smtp.googlemail.com"); email.setSmtpPort(465); email.setSSLOnConnect(true); email.setAuthenticator(new DefaultAuthenticator(Constants.MY_EMAIL, Constants.MY_PASSWORD)); email.setFrom(Constants.MY_EMAIL, "TRAN"); email.addTo(Constants.FRIEND_EMAIL, "Hong"); email.setSubject("The Map"); email.setMsg("Here is the map you wanted"); // Add the attachment email.attach(attachment); // Send the email email.send(); System.out.println("Sent!"); } catch (Exception e) { e.printStackTrace(); } } }
Результат:

Другой пример отправки Email c прикрепленной ссылкой (Link)
EmailWithAttachment2.java
package org.o7planning.tutorial.commonsemail; import java.net.URL; import org.apache.commons.mail.DefaultAuthenticator; import org.apache.commons.mail.EmailAttachment; import org.apache.commons.mail.MultiPartEmail; public class EmailWithAttachment2 { public static void main(String[] args) { try { // Create the attachment EmailAttachment attachment = new EmailAttachment(); attachment.setURL(new URL( "http://www.apache.org/images/asf_logo_wide.gif")); attachment.setDisposition(EmailAttachment.ATTACHMENT); attachment.setDescription("Apache logo"); attachment.setName("Apache logo"); // Create the email message MultiPartEmail email = new MultiPartEmail(); // Configuration email.setHostName("smtp.googlemail.com"); email.setSmtpPort(465); email.setSSLOnConnect(true); email.setAuthenticator(new DefaultAuthenticator( Constants.MY_EMAIL, Constants.MY_PASSWORD)); email.setFrom(Constants.MY_EMAIL, "TRAN"); email.addTo(Constants.FRIEND_EMAIL, "Hong"); email.setSubject("The logo"); email.setMsg("Here is Apache's logo"); // Add the attachment email.attach(attachment); // Send the email email.send(); System.out.println("Sent!"); } catch (Exception e) { e.printStackTrace(); } } }
Результат запуска примера:

SendHtmlEmail.java
package org.o7planning.tutorial.commonsemail; import java.net.URL; import org.apache.commons.mail.DefaultAuthenticator; import org.apache.commons.mail.HtmlEmail; public class SendHtmlEmail { public static void main(String[] args) { try { // Create the email message HtmlEmail email = new HtmlEmail(); // Configuration email.setHostName("smtp.googlemail.com"); email.setSmtpPort(465); email.setAuthenticator(new DefaultAuthenticator( Constants.MY_EMAIL,Constants.MY_PASSWORD)); email.setSSLOnConnect(true); email.setFrom(Constants.MY_EMAIL, "TRAN"); // Receiver email.addTo(Constants.FRIEND_EMAIL); // Title email.setSubject("Test Sending HTML formatted email"); // Embed the image and get the content id URL url = new URL("http://www.apache.org/images/asf_logo_wide.gif"); String cid = email.embed(url, "Apache logo"); // Set the html message email.setHtmlMsg("<html><h2>The apache logo</h2> <img src=\"cid:" + cid + "\"></html>"); // Set the alternative message email.setTextMsg("Your email client does not support HTML messages"); // Send email email.send(); System.out.println("Sent!!"); } catch (Exception e) { e.printStackTrace(); } } }

SendHtmlEmbedImageEmail.java
package org.o7planning.tutorial.commonsemail; import java.net.URL; import org.apache.commons.mail.DefaultAuthenticator; import org.apache.commons.mail.ImageHtmlEmail; import org.apache.commons.mail.resolver.DataSourceUrlResolver; public class SendHtmlEmbedImageEmail { public static void main(String[] args) { try { // Load your HTML email template // Here, Img has relative location (**) String htmlEmailTemplate = "<h2>Hello!</h2>" +"This is Apache Logo <br/>" +"<img src='proper/commons-email/images/commons-logo.png'/>"; // Create the email message ImageHtmlEmail email = new ImageHtmlEmail(); // Configuration email.setHostName("smtp.googlemail.com"); email.setSmtpPort(465); email.setAuthenticator(new DefaultAuthenticator( Constants.MY_EMAIL, Constants.MY_PASSWORD)); email.setSSLOnConnect(true); email.setFrom(Constants.MY_EMAIL, "TRAN"); email.addTo(Constants.FRIEND_EMAIL); email.setSubject("Sending HTML formatted email with embedded images"); // Define you base URL to resolve relative resource locations // (Example - Img you see above ** ) URL url = new URL("http://commons.apache.org"); email.setDataSourceResolver(new DataSourceUrlResolver(url) ); // Set the html message email.setHtmlMsg(htmlEmailTemplate); // Set the alternative message email.setTextMsg("Your email client does not support HTML messages"); // Send the email email.send(); System.out.println("Sent!!"); } catch (Exception e) { e.printStackTrace(); } } }

Если вы используете Commons Email в обычном проекте вам нужно скачать необходимые библиотеки. Commons Email на основании Email API поэтому вам нужно скачать 2 библиотеки:


Дальше скачайте библиотеку Email API:


Наконец, вы скачивали 2 файла jar.
