Latest web development tutorials

Java Enviar correo

Enviar mediante correo electrónico aplicaciones Java es muy simple, pero primero debe instalar JavaMail API y el Marco de activación de Java (JAF) en su máquina.

  • Puede descargar la última versión de Java el JavaMail , abrir la parte derecha de la página hay un enlace de Descargas, haga clic en él para descargar.
  • Puede descargar la última versión de Java (versión 1.1.1) JAF .

También puede utilizar el sitio para proporcionar enlace de descarga:

Descargar y descomprimir los archivos en el directorio de nivel superior de nueva creación, se encuentra algún archivo jar dos aplicaciones. Es necesario añadir archivosmail.jar y activation.jara su CLASSPATH.

Si utiliza un servidor de correo de terceros, tales como servidor SMTP QQ, puede ver el artículo completo en la parte inferior de la instancia de autenticación de usuario.


Basta con enviar un e-mail

Este es un ejemplo sencillo de envío de e-mail. Supongamos que su servidor local ya conectado a la red.

// 文件名 SendEmail.java
 
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
 
public class SendEmail
{
   public static void main(String [] args)
   {   
      // 收件人电子邮箱
      String to = "[email protected]";
 
      // 发件人电子邮箱
      String from = "[email protected]";
 
      // 指定发送邮件的主机为 localhost
      String host = "localhost";
 
      // 获取系统属性
      Properties properties = System.getProperties();
 
      // 设置邮件服务器
      properties.setProperty("mail.smtp.host", host);
 
      // 获取默认session对象
      Session session = Session.getDefaultInstance(properties);
 
      try{
         // 创建默认的 MimeMessage 对象
         MimeMessage message = new MimeMessage(session);
 
         // Set From: 头部头字段
         message.setFrom(new InternetAddress(from));
 
         // Set To: 头部头字段
         message.addRecipient(Message.RecipientType.TO,
                                  new InternetAddress(to));
 
         // Set Subject: 头部头字段
         message.setSubject("This is the Subject Line!");
 
         // 设置消息体
         message.setText("This is actual message");
 
         // 发送消息
         Transport.send(message);
         System.out.println("Sent message successfully....");
      }catch (MessagingException mex) {
         mex.printStackTrace();
      }
   }
}

Compilar y ejecutar el programa para enviar un simple correo-e:

$ java SendEmail
Sent message successfully....

Si desea enviar un correo electrónico a varios destinatarios, utilice los métodos siguientes para especificar múltiples destinatarios ID:

void addRecipients(Message.RecipientType type,
                   Address[] addresses)
throws MessagingException

La siguiente es la descripción de los parámetros:

  • Tipo: se fijará como A, CC o CCO CC aquí en nombre de la CC, BCC representantes de CC y secreta Ejemplo: .. Message.RecipientType.TO

  • direcciones: Este es el ID de correo electrónico de la matriz.Al especificar ID de correo electrónico, tendrá que utilizar el método InternetAddress ().


Enviar un correo electrónico HTML

Aquí está un ejemplo de correo electrónico HTML enviado. Supongamos que su servidor local ya conectado a la red.

Y es muy similar a la del ejemplo anterior, excepto que queremos método setContent () para usar para pasar el segundo parámetro es "text / html", para ajustar el contenido para ser enviado a especificar el contenido HTML.

// 文件名 SendHTMLEmail.java
 
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
 
public class SendHTMLEmail
{
   public static void main(String [] args)
   {
     
      // 收件人电子邮箱
      String to = "[email protected]";
 
      // 发件人电子邮箱
      String from = "[email protected]";
 
      // 指定发送邮件的主机为 localhost
      String host = "localhost";
 
      // 获取系统属性
      Properties properties = System.getProperties();
 
      // 设置邮件服务器
      properties.setProperty("mail.smtp.host", host);
 
      // 获取默认的 Session 对象。
      Session session = Session.getDefaultInstance(properties);
 
      try{
         // 创建默认的 MimeMessage 对象。
         MimeMessage message = new MimeMessage(session);
 
         // Set From: 头部头字段
         message.setFrom(new InternetAddress(from));
 
         // Set To: 头部头字段
         message.addRecipient(Message.RecipientType.TO,
                                  new InternetAddress(to));
 
         // Set Subject: 头字段
         message.setSubject("This is the Subject Line!");
 
         // 发送 HTML 消息, 可以插入html标签
         message.setContent("<h1>This is actual message</h1>",
                            "text/html" );
 
         // 发送消息
         Transport.send(message);
         System.out.println("Sent message successfully....");
      }catch (MessagingException mex) {
         mex.printStackTrace();
      }
   }
}

Compilar y ejecutar este programa para enviar correo electrónico HTML:

$ java SendHTMLEmail
Sent message successfully....

Enviar por correo electrónico con archivos adjuntos

Aquí está un ejemplo de E-mail con un archivo adjunto se envía. Supongamos que su servidor local ya conectado a la red.

// 文件名 SendFileEmail.java
 
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
 
public class SendFileEmail
{
   public static void main(String [] args)
   {
     
      // 收件人电子邮箱
      String to = "[email protected]";
 
      // 发件人电子邮箱
      String from = "[email protected]";
 
      // 指定发送邮件的主机为 localhost
      String host = "localhost";
 
      // 获取系统属性
      Properties properties = System.getProperties();
 
      // 设置邮件服务器
      properties.setProperty("mail.smtp.host", host);
 
      // 获取默认的 Session 对象。
      Session session = Session.getDefaultInstance(properties);
 
      try{
         // 创建默认的 MimeMessage 对象。
         MimeMessage message = new MimeMessage(session);
 
         // Set From: 头部头字段
         message.setFrom(new InternetAddress(from));
 
         // Set To: 头部头字段
         message.addRecipient(Message.RecipientType.TO,
                                  new InternetAddress(to));
 
         // Set Subject: 头字段
         message.setSubject("This is the Subject Line!");
 
         // 创建消息部分
         BodyPart messageBodyPart = new MimeBodyPart();
 
         // 消息
         messageBodyPart.setText("This is message body");
        
         // 创建多重消息
         Multipart multipart = new MimeMultipart();
 
         // 设置文本消息部分
         multipart.addBodyPart(messageBodyPart);
 
         // 附件部分
         messageBodyPart = new MimeBodyPart();
         String filename = "file.txt";
         DataSource source = new FileDataSource(filename);
         messageBodyPart.setDataHandler(new DataHandler(source));
         messageBodyPart.setFileName(filename);
         multipart.addBodyPart(messageBodyPart);
 
         // 发送完整消息
         message.setContent(multipart );
 
         //   发送消息
         Transport.send(message);
         System.out.println("Sent message successfully....");
      }catch (MessagingException mex) {
         mex.printStackTrace();
      }
   }
}

Compilar y ejecutar el programa para enviar correo electrónico con archivos adjuntos.

$ java SendFileEmail
Sent message successfully....

sección de la autenticación de usuarios

Si es necesario proporcionar un nombre de usuario y contraseña para el servidor de correo electrónico para lograr el propósito de la autenticación de usuarios, puede realizar los siguientes ajustes:

 props.put("mail.smtp.auth", "true");
 props.setProperty("mail.user", "myuser");
 props.setProperty("mail.password", "mypwd");

correo electrónico y otros mecanismos de entrega en consonancia con lo anterior.

Se requiere un nombre de usuario contraseña de autenticación de mensajes enviados Ejemplo:

En el servidor de correo QQ ejemplo presente, por ejemplo, necesita = "cuenta abierta en el servicio POP3 / SMTP para iniciar sesión QQ buzón de correo en el fondo en la" Configuración ", como se muestra a continuación:

qq electrónico para establecer la contraseña mediante la generación de una clave de licencia:

código Java es el siguiente:

// 需要用户名密码邮件发送实例
//文件名 SendEmail2.java
//本实例以QQ邮箱为例,你需要在qq后台设置

import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class SendEmail2
{
   public static void main(String [] args)
   {
      // 收件人电子邮箱
      String to = "[email protected]";

      // 发件人电子邮箱
      String from = "[email protected]";

      // 指定发送邮件的主机为 smtp.qq.com
      String host = "smtp.qq.com";  //QQ 邮件服务器

      // 获取系统属性
      Properties properties = System.getProperties();

      // 设置邮件服务器
      properties.setProperty("mail.smtp.host", host);

      properties.put("mail.smtp.auth", "true");
      // 获取默认session对象
      Session session = Session.getDefaultInstance(properties,new Authenticator(){
	    public PasswordAuthentication getPasswordAuthentication()
	    {
	     return new PasswordAuthentication("[email protected]", "qq邮箱密码"); //发件人邮件用户名、密码
	    }
	   });

      try{
         // 创建默认的 MimeMessage 对象
         MimeMessage message = new MimeMessage(session);

         // Set From: 头部头字段
         message.setFrom(new InternetAddress(from));

         // Set To: 头部头字段
         message.addRecipient(Message.RecipientType.TO,
                                  new InternetAddress(to));

         // Set Subject: 头部头字段
         message.setSubject("This is the Subject Line!");

         // 设置消息体
         message.setText("This is actual message");

         // 发送消息
         Transport.send(message);
         System.out.println("Sent message successfully....from w3cschool.cc");
      }catch (MessagingException mex) {
         mex.printStackTrace();
      }
   }
}