English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriales básicos de Java

Control de flujo Java

Java Arreglo

Java Orientado a Objetos (I)

Java Orientado a Objetos (II)

Java Orientado a Objetos (III)

Manejo de excepciones en Java

Java Lista (List)

Java Queue (cola)

Conjuntos de Java Map

Conjuntos de Java

Java Entrada/Salida (I/O/O)

Lector Java/Writer

Otros temas de Java

Java 发送邮件

Enviar E usando aplicaciones Java-JavaMail es muy simple, pero primero debes instalar la API JavaMail y el Java Activation Framework (JAF) en tu máquina.

  • Puedes descargar la última versión desde el sitio web de Java, JavaMail, abre la página de la derecha y hay un Descargas haga clic en él para descargar.

  • Puedes descargar la última versión desde el sitio web de Java, JAF (versión 1.1.1).

También puedes usar los enlaces de descarga proporcionados en este sitio:

Descarga y descomprime estos archivos, en el directorio superior recién creado, encontrarás algunos archivos jar de estas aplicaciones. Necesitas agregar mail.jar y activation.jar Agrega el archivo a tu CLASSPATH.

Si utilizas un servidor de correo tercero como el servidor SMTP de QQ, puedes ver un ejemplo completo de autenticación en la parte inferior del artículo.

Enviar un correo electrónico simple E-mail

A continuación se muestra un ejemplo de envío de un correo electrónico simple E-mail的实例。假设你的本地主机已经连接到网络。

// Nombre de archivo SendEmail.java
 
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
 
public class SendEmail
{
   public static void main(String [] args)
   {   
      // Correo electrónico del destinatario
      String to = "[email protected]";
 
      // Correo electrónico del remitente
      String from = "[email protected]";
 
      // 指定发送邮件的主机为 localhost
      String host = "localhost";
 
      // Obtener las propiedades del sistema
      Properties properties = System.getProperties();
 
      // Configurar el servidor de correo
      properties.setProperty("mail.smtp.host", host);
 
      // Obtener el objeto session por defecto
      Session session = Session.getDefaultInstance(properties);
 
      try{
         // Crear el objeto MimeMessage por defecto
         MimeMessage message = new MimeMessage(session);
 
         // Establecer From: campo de encabezado
         message.setFrom(new InternetAddress(from));
 
         // Establecer To: campo de encabezado
         message.addRecipient(Message.RecipientType.TO,
                                  new InternetAddress(to));
 
         // Establecer Asunto: campo de encabezado
         message.setSubject("Este es el Línea de Asunto!");
 
         // Establecer cuerpo de mensaje
         message.setText("Este es el mensaje real");
 
         // Enviar mensaje
         Transport.send(message);
         System.out.println("Mensaje enviado con éxito...");
      }catch (MessagingException mex) {
         mex.printStackTrace();
      }
   }
}

Compila y ejecuta este programa para enviar un correo electrónico simple E-mail:

$ java SendEmail
Mensaje enviado con éxito...

Si quieres enviar un correo electrónico,-Si deseas enviar un correo electrónico a varios destinatarios, utiliza el siguiente método para especificar varios IDs de destinatarios:

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

A continuación se describe los parámetros:

  • type:Deberá establecerse en TO, CC o BCC, donde CC representa CC (carbon copia) y BCC representa CC secreto. Ejemplo:Message.RecipientType.TO

  • addresses: 这是 email ID 的数组。在指定电子邮件 ID 时,你将需要使用 InternetAddress() 方法。

发送一封 HTML E-mail

下面是一个发送 HTML E-mail 的实例。假设你的本地主机已经连接到网络。

和上一个实例很相似,除了我们要使用 setContent() 方法来通过第二个参数为 "text/html",来设置内容来指定要发送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)
   {
     
      // Correo electrónico del destinatario
      String to = "[email protected]";
 
      // Correo electrónico del remitente
      String from = "[email protected]";
 
      // 指定发送邮件的主机为 localhost
      String host = "localhost";
 
      // Obtener las propiedades del sistema
      Properties properties = System.getProperties();
 
      // Configurar el servidor de correo
      properties.setProperty("mail.smtp.host", host);
 
      // 获取默认的 Session 对象。
      Session session = Session.getDefaultInstance(properties);
 
      try{
         // 创建默认的 MimeMessage 对象。
         MimeMessage message = new MimeMessage(session);
 
         // Establecer From: campo de encabezado
         message.setFrom(new InternetAddress(from));
 
         // Establecer To: campo de encabezado
         message.addRecipient(Message.RecipientType.TO,
                                  new InternetAddress(to));
 
         // Set Subject: 头字段
         message.setSubject("Este es el Línea de Asunto!");
 
         // 发送 HTML 消息, 可以插入html标签
         message.setContent("<h1>This is actual message</h1>",
                            "text/html" );
 
         // Enviar mensaje
         Transport.send(message);
         System.out.println("Mensaje enviado con éxito...");
      }catch (MessagingException mex) {
         mex.printStackTrace();
      }
   }
}

编译并运行此程序来发送HTML e-mail:

$ java SendHTMLEmail
Mensaje enviado con éxito...

发送带有附件的 E-mail

下面是一个发送带有附件的 E-mail的实例。假设你的本地主机已经连接到网络。

// 文件名 SendFileEmail.java
 
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
 
public class SendFileEmail
{
   public static void main(String [] args)
   {
     
      // Correo electrónico del destinatario
      String to = "[email protected]";
 
      // Correo electrónico del remitente
      String from = "[email protected]";
 
      // 指定发送邮件的主机为 localhost
      String host = "localhost";
 
      // Obtener las propiedades del sistema
      Properties properties = System.getProperties();
 
      // Configurar el servidor de correo
      properties.setProperty("mail.smtp.host", host);
 
      // 获取默认的 Session 对象。
      Session session = Session.getDefaultInstance(properties);
 
      try{
         // 创建默认的 MimeMessage 对象。
         MimeMessage message = new MimeMessage(session);
 
         // Establecer From: campo de encabezado
         message.setFrom(new InternetAddress(from));
 
         // Establecer To: campo de encabezado
         message.addRecipient(Message.RecipientType.TO,
                                  new InternetAddress(to));
 
         // Set Subject: 头字段
         message.setSubject("Este es el Línea de Asunto!");
 
         // 创建消息部分
         BodyPart messageBodyPart = new MimeBodyPart();
 
         // Mensaje
         messageBodyPart.setText("Este es el cuerpo del mensaje");
        
         // Crear mensaje múltiple
         Multipart multipart = new MimeMultipart();
 
         // Configurar parte del mensaje de texto
         multipart.addBodyPart(messageBodyPart);
 
         // Parte de archivo adjunto
         messageBodyPart = new MimeBodyPart();
         String filename = "file.txt";
         DataSource source = new FileDataSource(filename);
         messageBodyPart.setDataHandler(new DataHandler(source));
         messageBodyPart.setFileName(filename);
         multipart.addBodyPart(messageBodyPart);
 
         // Enviar mensaje completo
         message.setContent(multipart);
 
         //   Enviar mensaje
         Transport.send(message);
         System.out.println("Mensaje enviado con éxito...");
      }catch (MessagingException mex) {
         mex.printStackTrace();
      }
   }
}

Compila y ejecuta tu programa para enviar un correo electrónico con adjunto.

$ java SendFileEmail
Mensaje enviado con éxito...

Parte de autenticación de usuario

Si necesitas proporcionar nombre de usuario y contraseña a e-Para lograr la autenticación del usuario a través del servidor de correo electrónico de mail, puedes completar la configuración de la siguiente manera:

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

e-Otras formas de envío de correo electrónico de mail se mantienen consistentes con las anteriores.

Ejemplo de envío de correo electrónico con verificación de nombre de usuario y contraseña:

Este ejemplo utiliza el servidor de correo QQ, necesitas habilitar POP en la configuración de la cuenta de correo QQ después de iniciar sesión en el backend de QQ3/Servicio SMTP, como se muestra en la siguiente imagen:

La cuenta de correo QQ configura la contraseña a través de la generación de un código de autorización:

Código Java como se muestra a continuación:

// Ejemplo de envío de correo electrónico con nombre de usuario y contraseña
//Nombre de archivo SendEmail2.java
//Este ejemplo utiliza la cuenta de correo QQ, necesitas configurar en el backend de 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)
   {
      // Correo electrónico del destinatario
      String to = "[email protected]";
 
      // Correo electrónico del remitente
      String from = "[email protected]";
 
      // Especificar el host principal para enviar correos electrónicos como smtp.qq.com
      String host = "smtp.qq.com";  //Servidor de correo QQ
 
      // Obtener las propiedades del sistema
      Properties properties = System.getProperties();
 
      // Configurar el servidor de correo
      properties.setProperty("mail.smtp.host", host);
 
      properties.put("mail.smtp.auth", "true");
      // Obtener el objeto session por defecto
      Session session = Session.getDefaultInstance(properties, new Authenticator(){
        public PasswordAuthentication getPasswordAuthentication()
        {
         return new PasswordAuthentication("[email protected]", "Código de autorización de QQ Mail"); //Nombre de usuario del remitente del correo electrónico y contraseña de autorización
        }
       });
 
      try{
         // Crear el objeto MimeMessage por defecto
         MimeMessage message = new MimeMessage(session);
 
         // Establecer From: campo de encabezado
         message.setFrom(new InternetAddress(from));
 
         // Establecer To: campo de encabezado
         message.addRecipient(Message.RecipientType.TO,
                                  new InternetAddress(to));
 
         // Establecer Asunto: campo de encabezado
         message.setSubject("Este es el Línea de Asunto!");
 
         // Establecer cuerpo de mensaje
         message.setText("Este es el mensaje real");
 
         // Enviar mensaje
         Transport.send(message);
         System.out.println("Mensaje enviado con éxito....de oldtoolbag.com));
      }catch (MessagingException mex) {
         mex.printStackTrace();
      }
   }
}