Руководство Java Commons Email

View more Tutorials:

1- Введение

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

2- Библиотека

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:

3- Создать Project

Создайте 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>

4- Примечания для Gmail

Если ы хотите отправить email из приложения  Java используя  Gmail, вам нужно разрешить: менее безопасное приложение (Allow less secure apps):
На вашем бразере войдите в ваш  Gmail, и перейдите по следующей ссылке:

Вы получите оповещение от Google:

Некоторые приложение и устройства используют менее безопасную технологию входа в систему, которая может сделать ваш аккаунт более уязвимым. Вы можете отключить ( Turn Off) доступ для данных приложений, которые мы рекомендуем или включить ( Turn On) доступ если вы хотите их использовать несмотря на риск.

5- Простой пример отправления email 

Для начала - простой пример отправления Email с Commons-Email
Constants.java
package org.o7planning.tutorial.commonsemail;

public class Constants {

 
  public static final String MY_EMAIL = "[email protected]";
 
  public static final String MY_PASSWORD ="your password";

   public static final String FRIEND_EMAIL = "[email protected]";  
}
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();
      }
  }
}
Результат запуска примера:

6- Отправить Email с прикреплениями

Пример отправки 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();
      }
  }
}
Результат запуска примера:

7- Отправка Email формата HTML

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();
      }
  }
}

8- Отправка Email с форматом HTML, со встроенным изображением

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();
       }
   }
}

9- Аппендикс: Скачать библиотеку Commons Email

Если вы используете  Commons Email в обычном проекте вам нужно скачать необходимые библиотеки. Commons Email на основании  Email API поэтому вам нужно скачать 2 библиотеки:
Дальше скачайте библиотеку  Email API:
Наконец, вы скачивали 2 файла jar.

View more Tutorials: