- Senden von E-Mails mit der JavaMail-API
- Schritte zum Senden von E-Mails mit der JavaMail-API
- Holen Sie sich das Sitzungsobjekt
- Verfassen Sie die Nachricht
- Senden Sie die Nachricht
- Einfaches Beispiel für das Senden von E-Mails mithilfe der JavaMail-API
- Beispiel für das Senden von E-Mails mithilfe der JavaMail-API über den vom Hostanbieter bereitgestellten SMTP-Server
Es gibt verschiedene Möglichkeiten, E-Mails mithilfe der JavaMail-API zu senden. Zu diesem Zweck benötigen Sie einen SMTP-Server, der für den E-Mail-Versand zuständig ist.
Sie können eine der folgenden Techniken verwenden, um den SMTP-Server abzurufen:
- Installieren und verwenden Sie einen beliebigen SMTP-Server wie Postcast-Server, Apache James-Server, Cmail-Server usw. (oder)
- Nutzen Sie den vom Hostanbieter bereitgestellten SMTP-Server, z.B. mein SMTP-Server ist mail.javatpoint.com (oder)
- Verwenden Sie den SMTP-Server anderer Unternehmen, z. B. Gmail usw.
Hier lernen wir die drei oben genannten Ansätze zum Senden von E-Mails mithilfe der Javamail-API kennen. Wir sollten jedoch die grundlegenden Schritte zum Senden von E-Mails aus einer Java-Anwendung lernen.
Schritte zum Senden von E-Mails mit der JavaMail-API
Zum Versenden von E-Mails mit JavaMail sind die folgenden drei Schritte erforderlich. Sie sind wie folgt:
Holen Sie sich das Sitzungsobjekt | das alle Informationen des Hosts wie Hostname, Benutzername, Passwort usw. speichert.
Verfassen Sie die Nachricht |
Senden Sie die Nachricht |
1) Holen Sie sich das Sitzungsobjekt
Der javax.mail.Session-Klasse stellt zwei Methoden zum Abrufen des Sitzungsobjekts bereit: die Methode Session.getDefaultInstance() und die Methode Session.getInstance(). Sie können jede Methode verwenden, um das Sitzungsobjekt abzurufen.
Methode der Session-Klasse
NEIN. | Methode | Beschreibung |
1 | öffentliche statische Sitzung getDefaultInstance(Eigenschaften Requisiten) | gibt die Standardsitzung zurück. |
2 | öffentliche statische Sitzung getDefaultInstance(Properties props,Authenticator auth) | gibt die Standardsitzung zurück. |
3 | öffentliche statische Sitzung getInstance(Eigenschaften Requisiten) | gibt die neue Sitzung zurück. |
4 | öffentliche statische Sitzung getInstance(Properties props,Authenticator auth) | gibt die neue Sitzung zurück. |
Beispiel für die Methode getDefaultInstance()
Properties properties=new Properties(); //fill all the information like host name etc. Session session=Session.getDefaultInstance(properties,null);
Beispiel für die Methode getInstance()
Properties properties=new Properties(); //fill all the information like host name etc. Session session=Session.getInstance(properties,null);
2) Verfassen Sie die Nachricht
Die Klasse javax.mail.Message stellt Methoden zum Verfassen der Nachricht bereit. Da es sich jedoch um eine abstrakte Klasse handelt, wird hauptsächlich deren Unterklasse javax.mail.internet.MimeMessage verwendet. |
Um die Nachricht zu erstellen, müssen Sie ein Sitzungsobjekt im MimeMessage-Klassenkonstruktor übergeben. Zum Beispiel: |
MimeMessage message=new MimeMessage(session);
Jetzt wurde ein Nachrichtenobjekt erstellt, aber zum Speichern von Informationen in diesem Objekt bietet die MimeMessage-Klasse viele Methoden. Sehen wir uns die von der MimeMessage-Klasse bereitgestellten Methoden an: |
Häufig verwendete Methoden der MimeMessage-Klasse
NEIN. | Methode | Beschreibung |
1 | public void setFrom(Adressadresse) | wird verwendet, um das From-Header-Feld festzulegen. |
2 | public void addRecipient(Message.RecipientType Typ, Adressadresse) | wird verwendet, um die angegebene Adresse zum Empfängertyp hinzuzufügen. |
3 | public void addRecipients(Message.RecipientType Typ, Address[] Adressen) | wird verwendet, um die angegebenen Adressen zum Empfängertyp hinzuzufügen. |
4 | public void setSubject(String subject) | wird verwendet, um das Betreff-Header-Feld festzulegen. |
5 | public void setText(String textmessage) | wird verwendet, um den Text mithilfe des MIME-Typs text/plain als Nachrichteninhalt festzulegen. |
6 | public void setContent(Object msg, String contentType) | wird verwendet, um den Inhalt mithilfe des angegebenen MIME-Typs als Nachrichteninhalt festzulegen. |
Beispiel zum Verfassen der Nachricht:
MimeMessage message=new MimeMessage(session); message.setFrom(new InternetAddress('[email protected]')); message.addRecipient(Message.RecipientType.To, new InternetAddress('[email protected]')); message.setHeader('Hi, everyone'); message.setText('Hi, This mail is to inform you...');
3) Senden Sie die Nachricht
Die Klasse javax.mail.Transport stellt eine Methode zum Senden der Nachricht bereit. |
Häufig verwendete Methoden der Transportklasse
NEIN. | Methode | Beschreibung |
1 | public static void send(Message message) | wird verwendet, um die Nachricht zu senden. |
2 | public static void send(Nachricht Nachricht, Adresse[] Adresse) | wird verwendet, um die Nachricht an die angegebenen Adressen zu senden. |
Beispiel zum Versenden der Nachricht:
Transport.send(message);
Einfaches Beispiel für das Senden von E-Mails in Java
In diesem Beispiel lernen wir, wie man E-Mails über den auf dem Computer installierten SMTP-Server sendet, z. B. Postcast-Server, Apache James-Server, Cmail-Server usw. Wenn Sie E-Mails über den vom Hostanbieter bereitgestellten SMTP-Server senden möchten, sehen Sie sich das folgende Beispiel an. |
Um die E-Mail über die JavaMail-API zu senden, müssen Sie die beiden JAR-Dateien laden:Laden Sie diese JAR-Dateien herunter oder besuchen Sie die Oracle-Website, um die neueste Version herunterzuladen. |
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]';//change accordingly String from = '[email protected]';change accordingly String host = 'localhost';//or IP address //Get the session object Properties properties = System.getProperties(); properties.setProperty('mail.smtp.host', host); Session session = Session.getDefaultInstance(properties); //compose the message try{ MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); message.addRecipient(Message.RecipientType.TO,new InternetAddress(to)); message.setSubject('Ping'); message.setText('Hello, this is example of sending email '); // Send message Transport.send(message); System.out.println('message sent successfully....'); }catch (MessagingException mex) {mex.printStackTrace();} } }
Laden Sie dieses Beispiel herunter, um E-Mails zu sendenIn diesem Beispiel lernen wir, wie man E-Mails über den auf dem Computer installierten SMTP-Server sendet, z. B. Postcast-Server, Apache James-Server, Cmail-Server usw. Wenn Sie E-Mails über den vom Hostanbieter bereitgestellten SMTP-Server senden möchten, sehen Sie sich das folgende Beispiel an.
Um dieses Beispiel auszuführen, müssen Sie zwei JAR-Dateien laden. Es gibt 4 Möglichkeiten, die JAR-Datei zu laden. Eine Möglichkeit besteht darin, den Klassenpfad festzulegen. Sehen wir uns an, wie dieses Beispiel ausgeführt wird:
Laden Sie die JAR-Datei | c:> set classpath=mail.jar;activation.jar;.; |
Kompilieren Sie die Quelldatei | c:> javac SendEmail.java |
betrieben von | c:> Java SendEmail |
Beispiel für das Senden von E-Mails in Java über den vom Hostanbieter bereitgestellten SMTP-Server
Wenn Sie den vom Hostanbieter bereitgestellten SMTP-Server verwenden, z. mail.javatpoint.com , müssen Sie den Benutzernamen und das Passwort authentifizieren. Die Klasse javax.mail.PasswordAuthentication wird zur Authentifizierung des Passworts verwendet. |
Wenn Sie die E-Mail über die JavaMail-API senden, laden Sie die beiden JAR-Dateien:Laden Sie diese JAR-Dateien herunter oder besuchen Sie die Oracle-Website, um die neueste Version herunterzuladen. |
import java.util.Properties; import javax.mail.*; import javax.mail.internet.*; public class SendMailBySite { public static void main(String[] args) { String host='mail.javatpoint.com'; final String user='[email protected]';//change accordingly final String password='xxxxx';//change accordingly String to='[email protected]';//change accordingly //Get the session object Properties props = new Properties(); props.put('mail.smtp.host',host); props.put('mail.smtp.auth', 'true'); Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(user,password); } }); //Compose the message try { MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(user)); message.addRecipient(Message.RecipientType.TO,new InternetAddress(to)); message.setSubject('javatpoint'); message.setText('This is simple program of sending email using JavaMail API'); //send the message Transport.send(message); System.out.println('message sent successfully...'); } catch (MessagingException e) {e.printStackTrace();} } }
Laden Sie dieses Beispiel herunter, um E-Mails zu sendenWie Sie im obigen Beispiel sehen können, müssen Benutzer-ID und Passwort authentifiziert werden. Wie dieses Programm zeigt, können Sie ganz einfach E-Mails versenden. Ändern Sie den Benutzernamen und das Passwort entsprechend. Sehen wir uns noch einmal an, wie man es mit einer einfachen Technik ausführt:
Laden Sie die JAR-Datei | c:> set classpath=mail.jar;activation.jar;.; |
Kompilieren Sie die Quelldatei | c:> javac SendMailBySite.java |
betrieben von | c:> Java SendMailBySite |