Java - E-Mail senden
Das Senden einer E-Mail mit Ihrer Java-Anwendung ist einfach genug, sollte aber zunächst erfolgen JavaMail API und Java Activation Framework (JAF) auf Ihrem Computer installiert.
Sie können die neueste Version von JavaMail (Version 1.2) von der Standard-Website von Java herunterladen.
Sie können die neueste Version von JAF (Version 1.1.1) von der Java-Standardwebsite herunterladen.
Laden Sie diese Dateien herunter und entpacken Sie sie. In den neu erstellten Verzeichnissen der obersten Ebene finden Sie eine Reihe von JAR-Dateien für beide Anwendungen. Sie müssen hinzufügenmail.jar und activation.jar Dateien in Ihrem CLASSPATH.
Senden Sie eine einfache E-Mail
Hier ist ein Beispiel zum Senden einer einfachen E-Mail von Ihrem Computer. Es wird davon ausgegangen, dass Ihrlocalhost ist mit dem Internet verbunden und in der Lage, eine E-Mail zu senden.
Beispiel
// File Name SendEmail.java
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
public class SendEmail {
public static void main(String [] args) {
// Recipient's email ID needs to be mentioned.
String to = "[email protected]";
// Sender's email ID needs to be mentioned
String from = "[email protected]";
// Assuming you are sending email from localhost
String host = "localhost";
// Get system properties
Properties properties = System.getProperties();
// Setup mail server
properties.setProperty("mail.smtp.host", host);
// Get the default Session object.
Session session = Session.getDefaultInstance(properties);
try {
// Create a default MimeMessage object.
MimeMessage message = new MimeMessage(session);
// Set From: header field of the header.
message.setFrom(new InternetAddress(from));
// Set To: header field of the header.
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
// Set Subject: header field
message.setSubject("This is the Subject Line!");
// Now set the actual message
message.setText("This is actual message");
// Send message
Transport.send(message);
System.out.println("Sent message successfully....");
} catch (MessagingException mex) {
mex.printStackTrace();
}
}
}
Kompilieren Sie dieses Programm und führen Sie es aus, um eine einfache E-Mail zu senden.
Ausgabe
$ java SendEmail
Sent message successfully....
Wenn Sie eine E-Mail an mehrere Empfänger senden möchten, werden die folgenden Methoden verwendet, um mehrere E-Mail-IDs anzugeben:
void addRecipients(Message.RecipientType type, Address[] addresses)
throws MessagingException
Hier ist die Beschreibung der Parameter -
type- Dies würde auf TO, CC oder BCC gesetzt. Hier steht CC für Carbon Copy und BCC für Black Carbon Copy. Beispiel: Message.RecipientType.TO
addresses- Dies ist ein Array von E-Mail-IDs. Sie müssten die InternetAddress () -Methode verwenden, während Sie E-Mail-IDs angeben.
Senden Sie eine HTML-E-Mail
Hier ist ein Beispiel zum Senden einer HTML-E-Mail von Ihrem Computer. Hier wird davon ausgegangen, dass Ihrlocalhost ist mit dem Internet verbunden und in der Lage, eine E-Mail zu senden.
Dieses Beispiel ist dem vorherigen sehr ähnlich, außer dass wir hier die setContent () -Methode verwenden, um Inhalte festzulegen, deren zweites Argument "text / html" ist, um anzugeben, dass der HTML-Inhalt in der Nachricht enthalten ist.
In diesem Beispiel können Sie so viel HTML-Inhalt senden, wie Sie möchten.
Beispiel
// File Name SendHTMLEmail.java
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
public class SendHTMLEmail {
public static void main(String [] args) {
// Recipient's email ID needs to be mentioned.
String to = "[email protected]";
// Sender's email ID needs to be mentioned
String from = "[email protected]";
// Assuming you are sending email from localhost
String host = "localhost";
// Get system properties
Properties properties = System.getProperties();
// Setup mail server
properties.setProperty("mail.smtp.host", host);
// Get the default Session object.
Session session = Session.getDefaultInstance(properties);
try {
// Create a default MimeMessage object.
MimeMessage message = new MimeMessage(session);
// Set From: header field of the header.
message.setFrom(new InternetAddress(from));
// Set To: header field of the header.
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
// Set Subject: header field
message.setSubject("This is the Subject Line!");
// Send the actual HTML message, as big as you like
message.setContent("<h1>This is actual message</h1>", "text/html");
// Send message
Transport.send(message);
System.out.println("Sent message successfully....");
} catch (MessagingException mex) {
mex.printStackTrace();
}
}
}
Kompilieren Sie dieses Programm und führen Sie es aus, um eine HTML-E-Mail zu senden.
Ausgabe
$ java SendHTMLEmail
Sent message successfully....
Anhang per E-Mail senden
Hier ist ein Beispiel zum Senden einer E-Mail mit Anhang von Ihrem Computer. Hier wird davon ausgegangen, dass Ihrlocalhost ist mit dem Internet verbunden und in der Lage, eine E-Mail zu senden.
Beispiel
// File Name SendFileEmail.java
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
public class SendFileEmail {
public static void main(String [] args) {
// Recipient's email ID needs to be mentioned.
String to = "[email protected]";
// Sender's email ID needs to be mentioned
String from = "[email protected]";
// Assuming you are sending email from localhost
String host = "localhost";
// Get system properties
Properties properties = System.getProperties();
// Setup mail server
properties.setProperty("mail.smtp.host", host);
// Get the default Session object.
Session session = Session.getDefaultInstance(properties);
try {
// Create a default MimeMessage object.
MimeMessage message = new MimeMessage(session);
// Set From: header field of the header.
message.setFrom(new InternetAddress(from));
// Set To: header field of the header.
message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));
// Set Subject: header field
message.setSubject("This is the Subject Line!");
// Create the message part
BodyPart messageBodyPart = new MimeBodyPart();
// Fill the message
messageBodyPart.setText("This is message body");
// Create a multipar message
Multipart multipart = new MimeMultipart();
// Set text message part
multipart.addBodyPart(messageBodyPart);
// Part two is attachment
messageBodyPart = new MimeBodyPart();
String filename = "file.txt";
DataSource source = new FileDataSource(filename);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(filename);
multipart.addBodyPart(messageBodyPart);
// Send the complete message parts
message.setContent(multipart );
// Send message
Transport.send(message);
System.out.println("Sent message successfully....");
} catch (MessagingException mex) {
mex.printStackTrace();
}
}
}
Kompilieren Sie dieses Programm und führen Sie es aus, um eine HTML-E-Mail zu senden.
Ausgabe
$ java SendFileEmail
Sent message successfully....
Benutzerauthentifizierungsteil
Wenn dem E-Mail-Server zur Authentifizierung Benutzer-ID und Kennwort angegeben werden müssen, können Sie diese Eigenschaften wie folgt festlegen:
props.setProperty("mail.user", "myuser");
props.setProperty("mail.password", "mypwd");
Der Rest des E-Mail-Versandmechanismus bleibt wie oben erläutert.