1. Einführung in E-Mail
Eine E-Mail besteht aus vielen Informationen. Andere werden vorerst nicht berücksichtigt, wie z. B. Kopien usw.:
1. Empfänger: Die E-Mail-Adresse des Empfängers, z. B. [email protected]
2. Empfängername: Wird angezeigt, wenn die meisten E-Mails angezeigt werden, z. B. Loadfate [email protected]
3. Absender: E-Mail-Adresse des Absenders
4. Name des Absenders:
5. Betreff: der Titel der E-Mail
6. Inhalt und Anhänge: der Hauptinhalt der E-Mail
2. Allgemeine Schritte zum Versenden von E-Mails mit Java
In allgemeinen Projekten gibt es keinen separaten Mailserver. Im Allgemeinen werden die Server anderer Personen verwendet.
1. Richten Sie den SMTP-Server ein: Verschiedene Mailserver haben unterschiedliche Adressen. Beispiel: smtp.qq.com steht für den SMTP-Server von Tencent.
2. Autorisierung: Verwenden Sie das Konto und das Passwort des Servers, um sich beim Server anzumelden.
3. E-Mail erstellen: Erstellen Sie eine E-Mail mit allen Informationen wie Absender, Empfänger, Inhalt usw.
4. Legen Sie die Eigenschaften der E-Mail fest: Fügen Sie Daten zu den Eigenschaften der E-Mail hinzu.
5. E-Mail-Versand: Da die Pakete unterschiedlich sind, sind die Versandmethoden inkonsistent.
3. Java Mail und Apache Mail
Apache Mail ist eine Kapselung von Java Mail, die einfacher zu verwenden ist und ein besseres Verständnis für die logische Hierarchie aufweist.
Um Java Mail zu verwenden, müssen Sie lediglich ein JAR-Paket importieren: mail.jar.
Wenn Sie Apache Mail verwenden, müssen Sie zwei JAR-Pakete importieren: mail.jar und commons-email-1.3.1.jar.
4. Verwenden Sie Java Mail zum Versenden von E-Mails
Kopieren Sie den Codecode wie folgt:
public static void main(String[] args) löst eine Ausnahme aus {
final String user = "779554589";
final String passwort = "";
String fromAddress = "[email protected]";
String toAddress = "[email protected]";
String subject = „Testsubjekt per E-Mail senden“;
String content = „Dies ist eine Test-E-Mail<b>haha</b>“;
//Konfigurationsparameter
Eigenschaften props = new Properties();
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.host", "smtp.qq.com");
//Methode 1: Transportobjekt zum Senden von E-Mails verwenden
{
//Sitzung über Parameter generieren
Sitzung session = Session.getInstance(props);
//Debug-Modus aktivieren
session.setDebug(true);
//Eine E-Mail erstellen und Informationen festlegen
Nachricht message = new MimeMessage(session);
message.setFrom(new InternetAddress(fromAddress));
message.setSubject(subject);
message.setText(content);
//Übertragung erstellen
Transport transport = session.getTransport();
//Mit SMTP-Server verbinden
transport.connect(Benutzer, Passwort);
//schicken
transport.sendMessage(message, new InternetAddress[] { new InternetAddress(toAddress) });
transport.close();
}
//Methode 2: Verwenden Sie die statische Methode der Transportklasse, um E-Mails zu senden
{
//Autorisierte Verbindung erhalten, wenn eine Sitzung generiert wird
Session session = Session.getInstance(props, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
neues PasswordAuthentication(Benutzer, Passwort) zurückgeben;
}
});
session.setDebug(true);
//Eine E-Mail erstellen und Informationen festlegen
Nachricht message = new MimeMessage(session);
message.setSubject(subject);
message.setFrom(new InternetAddress(fromAddress));
message.setRecipient(RecipientType.TO, new InternetAddress(toAddress));
message.setContent(content, "text/html;charset=utf-8");
// Direkt senden, die Nachricht wird über die autorisierte Sitzung generiert
Transport.send(Nachricht);
}
}
5. Verwenden Sie Apache Mail, um E-Mails zu versenden
Kopieren Sie den Codecode wie folgt:
öffentliche Klasse ApacheMailTest {
// SMTP-Server
private String hostName = "smtp.qq.com";
//Konto und Passwort
privater String userName = "779554589";
private Stringpasswort = „Das ist ein Geheimnis“;
// Absender
private String fromAddress = "[email protected]";
// Name des Absenders
privater String fromName = "loadfate";
public static void main(String[] args) löst eine Ausnahme aus {
//Empfänger und Empfängername
String toAddress = "[email protected]";
String toName = "loadfate";
ApacheMailTest test = new ApacheMailTest();
// Alle Ausnahmen werden behandelt, um das Durchsuchen zu erleichtern
test.sendSimpleEmail(toAddress, toName);
test.sendHtmlEmail(toAddress, toName);
test.sendMultiPartEmail(toAddress, toName);
System.out.println("Senden abgeschlossen");
}
//Senden Sie eine einfache E-Mail, ähnlich einer Nachricht
public void sendSimpleEmail(String toAddress, String toName) löst eine Ausnahme aus {
SimpleEmail email = new SimpleEmail();
email.setHostName(hostName);//SMTP-Server festlegen
email.setAuthentication(userName, password);//Autorisierungsinformationen festlegen
email.setCharset("utf-8");
email.setFrom(fromAddress, fromName, "utf-8");//Absenderinformationen festlegen
email.addTo(toAddress, toName, "utf-8");//Empfängerinformationen festlegen
email.setSubject("Test Subject");//Legen Sie den Betreff fest
email.setMsg("Dies ist ein einfacher Test!");//Legen Sie den E-Mail-Inhalt fest
email.send();//E-Mail senden
}
//E-Mail mit HTML-Inhalt senden
public void sendHtmlEmail(String toAddress, String toName) löst eine Ausnahme aus {
HtmlEmail email = new HtmlEmail();
email.setHostName(hostName);
email.setAuthentication(Benutzername, Passwort);
email.setCharset("utf-8");
email.addTo(toAddress, toName, "utf-8");
email.setFrom(fromAddress, fromName, "utf-8");
email.setSubject("Dies ist eine HTML-E-Mail");
// Legen Sie den HTML-Inhalt fest. Bei der tatsächlichen Verwendung können Sie den geschriebenen HTML-Code aus dem Text lesen.
email.setHtmlMsg("<div style='width:100px;height:200px;'>a</div>");
email.send();
}
//Versenden Sie komplexe E-Mails, einschließlich Anhängen usw.
public void sendMultiPartEmail(String toAddress, String toName) löst eine Ausnahme aus {
MultiPartEmail email = null;
email = new MultiPartEmail();
email.setHostName(hostName);
email.setAuthentication(Benutzername, Passwort);
email.setCharset("utf-8");
email.addTo(toAddress, toName, "utf-8");
email.setFrom(fromAddress, fromName, "utf-8");
email.setSubject("Dies ist eine E-Mail mit Anhängen");
email.setMsg("<a href='#'>Inhalt testen</a>");
//Fügen Sie der E-Mail zusätzlichen Inhalt hinzu
EmailAttachment-Anhang = new EmailAttachment();
attachment.setPath("D://mail.txt");//lokale Datei
// attachment.setURL(new URL("http://xxx/a.gif"));//remote file
attachment.setDisposition(EmailAttachment.ATTACHMENT);
attachment.setDescription("Beschreibungsinformationen");
// Legen Sie den Anzeigenamen des Anhangs fest, der codiert werden muss, sonst wird das Chinesische verstümmelt
attachment.setName(MimeUtility.encodeText("Mail.txt"));
//Anhang zur E-Mail hinzufügen
email.attach(attachment);
email.send();
}
}
6. Anhang des Projektordners: maildemo
Download-Adresse: http://pan.baidu.com/s/1bn1Y6BX
Wenn Sie Fragen oder Anregungen haben, kontaktieren Sie mich bitte
Dateibeschreibung:
1. maildemo.zip: Quellcode von maildemo
2. mail.jar: Jar-Paket von Java Mail
3. commons-email-1.3.1.jar: JAR-Paket von Apache Mail