Latest web development tutorials

Java Envoyer un mail

Envoyer Utilisation E-mail applications Java est très simple, mais d'abord vous devez installer API JavaMail et le Java Activation Framework (JAF) sur votre machine.

  • Vous pouvez télécharger la dernière version de Java le JavaMail , ouvrez le côté droit de la page , il y a un lien Téléchargements, cliquez dessus pour télécharger.
  • Vous pouvez télécharger la dernière version de Java (Version 1.1.1) JAF .

Vous pouvez également utiliser le site pour fournir le lien de téléchargement:

Téléchargez et décompressez les fichiers dans le répertoire de haut niveau nouvellement créé, vous trouverez un certain fichier jar deux applications. Vous devez ajouter des fichiersmail.jar et activation.jarà votre CLASSPATH.

Si vous utilisez un serveur de messagerie tiers, tels que le serveur QQ SMTP, vous pouvez consulter l'article complet sur le fond de l'instance d'authentification des utilisateurs.


Envoyez simplement un e-mail

Voici un exemple simple de l'envoi d'e-mail. Supposons que votre localhost déjà connecté au réseau.

// 文件名 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();
      }
   }
}

Compiler et exécuter le programme pour envoyer un simple e-mail:

$ java SendEmail
Sent message successfully....

Si vous souhaitez envoyer un e-mail à plusieurs destinataires, utilisez les méthodes suivantes pour spécifier plusieurs destinataires ID:

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

Ce qui suit est la description des paramètres:

  • Type: à définir comme TO, CC ou BCC CC ici au nom du CC, BCC représentants de CC secrète y Exemple: .. Message.RecipientType.TO

  • adresses: Ceci est l'ID de messagerie du réseau.Lors de la spécification e-mail ID, vous devrez utiliser la méthode InternetAddress ().


Envoyer un e-mail HTML

Voici un exemple de HTML E-mail envoyé. Supposons que votre localhost déjà connecté au réseau.

Et il est très similaire à l'exemple précédent, sauf que nous voulons utiliser la méthode de setContent () pour passer le second paramètre est "text / html", pour définir le contenu à envoyer à préciser le contenu 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();
      }
   }
}

Compiler et exécuter ce programme pour envoyer HTML e-mail:

$ java SendHTMLEmail
Sent message successfully....

Envoyer par e-mail avec pièces jointes

Voici un exemple de E-mail avec une pièce jointe est envoyée. Supposons que votre localhost déjà connecté au réseau.

// 文件名 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();
      }
   }
}

Compiler et exécuter votre programme pour envoyer des courriels avec des pièces jointes.

$ java SendFileEmail
Sent message successfully....

section d'authentification de l'utilisateur

Si vous devez fournir un nom d'utilisateur et mot de passe sur le serveur e-mail à atteindre l'objectif de l'authentification des utilisateurs, vous pouvez compléter les paramètres suivants:

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

e-mail et d'autres mécanismes de prestation compatibles avec ce qui précède.

Elle nécessite un nom d'utilisateur mot de passe des messages d'authentification envoyés Exemple:

Dans le présent serveur de messagerie par exemple QQ, par exemple, vous devez vous connecter boîte aux lettres QQ en arrière-plan dans les "Paramètres" = "compte ouvert dans le service POP3 / SMTP, comme indiqué ci-dessous:

qq-mail pour définir le mot de passe en générant une clé de licence:

Le code Java est la suivante:

// 需要用户名密码邮件发送实例
//文件名 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();
      }
   }
}