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

Java-Grundlagen-Tutorial

Java Kontrollfluss

Java Array

Java objektorientiert (I)

Java objektorientiert (II)

Java objektorientiert (III)

Java-Exception-Handling

Java Liste (Liste)

Java Queue (Warteschlange)

Java Map-Sammlung

Java Set-Sammlung

Java Ein- und Ausgabemodul (I/O)

Java Reader/Writer

Andere Themen von Java

Java E-Mail senden

Senden Sie E-Mails mit Java-Anwendungen-mail ist sehr einfach, aber Sie sollten zunächst JavaMail API und Java Activation Framework (JAF) auf Ihrem Computer installieren.

  • Sie können die neueste Version von Java von der Java-Website herunterladen JavaMail,Öffnen Sie die rechte Seite der Webseite und Sie finden Downloads Klicken Sie auf den Link, um ihn herunterzuladen.

  • Sie können die neueste Version von Java von der Java-Website herunterladen JAF (Version 1.1.1).

Sie können auch die Download-Links auf dieser Seite verwenden:

Laden Sie diese Dateien herunter und entpacken Sie sie. In dem neu erstellten obersten Verzeichnis finden Sie einige jar-Dateien der beiden Anwendungen. Sie müssen mail.jar und activation.jar Fügen Sie die Datei Ihrem CLASSPATH hinzu.

Wenn Sie einen Drittanbieter-Mailserver wie den SMTP-Server von QQ verwenden, können Sie am Ende des Artikels ein vollständiges Beispiel zur Benutzerauthentifizierung finden.

Senden Sie eine einfache E-Mail-mail

Nachstehend ist ein Beispiel für die Sendung einer einfachen E-Mail-mail的实例。假设你的本地主机已经连接到网络。

// Dateiname SendEmail.java
 
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
 
public class SendEmail
{
   public static void main(String [] args)
   {   
      // Empfänger E-Mail-Adresse
      String to = "[email protected]";
 
      // Absender E-Mail-Adresse
      String from = "[email protected]";
 
      // 指定发送邮件的主机为 localhost
      String host = "localhost";
 
      // Erhalten Sie die Systemeigenschaften
      Properties properties = System.getProperties();
 
      // Einstellen Sie den E-Mail-Server
      properties.setProperty("mail.smtp.host", host);
 
      // Erhalten Sie das Standard-Session-Objekt
      Session session = Session.getDefaultInstance(properties);
 
      try{
         // Erstellen Sie das Standard-MimeMessage-Objekt
         MimeMessage message = new MimeMessage(session);
 
         // Set From: Kopfzeilenfeld
         message.setFrom(new InternetAddress(from));
 
         // Set To: Kopfzeilenfeld
         message.addRecipient(Message.RecipientType.TO,
                                  new InternetAddress(to));
 
         // Set Subject: Kopfzeilenfeld
         message.setSubject("This is the Subject Line!");
 
         // Nachrichtentext setzen
         message.setText("This is actual message");
 
         // Nachricht senden
         Transport.send(message);
         System.out.println("Sent message successfully....");
      }catch (MessagingException mex) {
         mex.printStackTrace();
      }
   }
}

Kompilieren und führen Sie dieses Programm aus, um eine einfache E-Mail zu senden-mail:

$ java SendEmail
Sent message successfully....

Wenn Sie eine E-Mail senden möchten,-Wenn Sie mehrere Empfänger an eine E-Mail senden möchten, verwenden Sie die folgende Methode, um mehrere Empfänger-IDs zu spezifizieren:

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

Nachstehend ist eine Beschreibung der Parameter:

  • type:Hier muss es auf TO, CC oder BCC eingestellt werden, wobei CC für Kopie und BCC für geheimen Kopie steht. Beispiel: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)
   {
     
      // Empfänger E-Mail-Adresse
      String to = "[email protected]";
 
      // Absender E-Mail-Adresse
      String from = "[email protected]";
 
      // 指定发送邮件的主机为 localhost
      String host = "localhost";
 
      // Erhalten Sie die Systemeigenschaften
      Properties properties = System.getProperties();
 
      // Einstellen Sie den E-Mail-Server
      properties.setProperty("mail.smtp.host", host);
 
      // 获取默认的 Session 对象。
      Session session = Session.getDefaultInstance(properties);
 
      try{
         // 创建默认的 MimeMessage 对象。
         MimeMessage message = new MimeMessage(session);
 
         // Set From: Kopfzeilenfeld
         message.setFrom(new InternetAddress(from));
 
         // Set To: Kopfzeilenfeld
         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" );
 
         // Nachricht senden
         Transport.send(message);
         System.out.println("Sent message successfully....");
      }catch (MessagingException mex) {
         mex.printStackTrace();
      }
   }
}

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

$ java SendHTMLEmail
Sent message successfully....

发送带有附件的 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)
   {
     
      // Empfänger E-Mail-Adresse
      String to = "[email protected]";
 
      // Absender E-Mail-Adresse
      String from = "[email protected]";
 
      // 指定发送邮件的主机为 localhost
      String host = "localhost";
 
      // Erhalten Sie die Systemeigenschaften
      Properties properties = System.getProperties();
 
      // Einstellen Sie den E-Mail-Server
      properties.setProperty("mail.smtp.host", host);
 
      // 获取默认的 Session 对象。
      Session session = Session.getDefaultInstance(properties);
 
      try{
         // 创建默认的 MimeMessage 对象。
         MimeMessage message = new MimeMessage(session);
 
         // Set From: Kopfzeilenfeld
         message.setFrom(new InternetAddress(from));
 
         // Set To: Kopfzeilenfeld
         message.addRecipient(Message.RecipientType.TO,
                                  new InternetAddress(to));
 
         // Set Subject: 头字段
         message.setSubject("This is the Subject Line!");
 
         // 创建消息部分
         BodyPart messageBodyPart = new MimeBodyPart();
 
         // Nachricht
         messageBodyPart.setText("This is message body");
        
         // Mehrere Nachrichten erstellen
         Multipart multipart = new MimeMultipart();
 
         // Textnachrichteneinstellungen vornehmen
         multipart.addBodyPart(messageBodyPart);
 
         // Anhangsteil
         messageBodyPart = new MimeBodyPart();
         String filename = "file.txt";
         DataSource source = new FileDataSource(filename);
         messageBodyPart.setDataHandler(new DataHandler(source));
         messageBodyPart.setFileName(filename);
         multipart.addBodyPart(messageBodyPart);
 
         // Gesamte Nachricht senden
         message.setContent(multipart);
 
         //   Nachricht senden
         Transport.send(message);
         System.out.println("Sent message successfully....");
      }catch (MessagingException mex) {
         mex.printStackTrace();
      }
   }
}

Kompilieren und führen Sie Ihr Programm aus, um eine E-Mail mit Anhang zu senden.

$ java SendFileEmail
Sent message successfully....

Benutzer-authentifizierungsteil

Wenn Sie Benutzernamen und Passwörter an e liefern müssen-Um die Benutzer-authentifizierung durch den mail-Server zu erreichen, können Sie die folgenden Einstellungen vornehmen:

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

e-Andere Sendemechanismen von mail sind mit den oben genannten identisch.

Beispiel zur E-Mail-Sendung mit Benutzernamen und Passwort-Überprüfung:

Dieses Beispiel verwendet den QQ-E-Mail-Server als Beispiel, Sie müssen im Login-Bereich der QQ-E-Mail-Backend "Einstellungen" => "Konto" die POP aktivieren3/SMTP-Dienst, wie im folgenden Bild gezeigt:

QQ-E-Mail kann über die Generierung eines Autorisierungs-Codes zum Festlegen des Passworts eingerichtet werden:

Java-Code folgt:

// Beispiel zur E-Mail-Sendung mit Benutzernamen und Passwort
//Dateiname SendEmail2.java
//Dieses Beispiel verwendet die QQ-E-Mail als Beispiel, Sie müssen im QQ-Backend die Einstellungen vornehmen
 
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)
   {
      // Empfänger E-Mail-Adresse
      String to = "[email protected]";
 
      // Absender E-Mail-Adresse
      String from = "[email protected]";
 
      // Bestimmen Sie den Hauptrechner für die Sendung von E-Mails als smtp.qq.com
      String host = "smtp.qq.com";  //QQ E-Mail-Server
 
      // Erhalten Sie die Systemeigenschaften
      Properties properties = System.getProperties();
 
      // Einstellen Sie den E-Mail-Server
      properties.setProperty("mail.smtp.host", host);
 
      properties.put("mail.smtp.auth", "true");
      // Erhalten Sie das Standard-Session-Objekt
      Session session = Session.getDefaultInstance(properties, new Authenticator() {
        public PasswordAuthentication getPasswordAuthentication()
        {
         return new PasswordAuthentication("[email protected]", "qq E-Mail-Berechtigungscode"); //Absender E-Mail-Benutzername, Autorisierungscode
        }
       });
 
      try{
         // Erstellen Sie das Standard-MimeMessage-Objekt
         MimeMessage message = new MimeMessage(session);
 
         // Set From: Kopfzeilenfeld
         message.setFrom(new InternetAddress(from));
 
         // Set To: Kopfzeilenfeld
         message.addRecipient(Message.RecipientType.TO,
                                  new InternetAddress(to));
 
         // Set Subject: Kopfzeilenfeld
         message.setSubject("This is the Subject Line!");
 
         // Nachrichtentext setzen
         message.setText("This is actual message");
 
         // Nachricht senden
         Transport.send(message);
         System.out.println("Message successfully sent....from oldtoolbag.com));
      }catch (MessagingException mex) {
         mex.printStackTrace();
      }
   }
}