Die Javamail -API verwendet die Klasse javax.mail.message, um eine Nachricht darzustellen. Die Nachrichtenklasse ist eine abstrakte Klasse, daher müssen wir ihre Unterklasse javax.mail.internet.mimemessage -Klasse verwenden, um ein Instanzobjekt der Nachrichtenklasse zu erstellen. Wenn wir eine einfache Textnachricht erstellen, kann die Mimemessage -Klasse unsere Bedürfnisse erfüllen. Wenn wir jedoch eine komplexe E -Mail mit eingebetteten Ressourcen oder Anhängen erstellen müssen, müssen wir Klassen wie Mimemessage, javax.mail.internet.mimebodypart und javax.mail.internet.MimemultiPart in der Javamail -API verwenden.
1. Die Mimemessage -Klasse repräsentiert die gesamte E -Mail
2. Die Mimebodypart -Klasse repräsentiert eine MIME -Nachricht der E -Mail
3. Die Mimemultipart -Klasse stellt eine kombinierte MIME -Nachricht dar, die aus mehreren MIME -Nachrichten besteht.
Die Arbeitsbeziehung dieser drei Klassen ist in der folgenden Abbildung dargestellt:
Obwohl Anwendungsentwickler normalerweise nur die drei Hauptklassen verwenden müssen: Mimemessage, Mimebodypart und MimemultiPart beim Erstellen von E -Mail -Inhalten mit Javamailapi, müssen auch die Vererbungsbeziehung der Klasse verstehen. In der folgenden Abbildung werden die Vererbungsbeziehungen und gemeinsamen Methoden dieser drei Klassen aufgeführt.
Verwenden Sie als Nächstes die Klasse javax.mail.internet.mimemessage, um eine einfache Textnachricht zu erstellen.
Import Java.util.date; Import Java.util.Properties; Import Javax.mail.Message; Import Javax.mail.Session; args) löst eine Ausnahme aus {String von = "[email protected]"; String to = "[email protected]"; String Subjekt = "test"; String body = "test !!!"; // Session -Instance -Objekt Session Session = Session.getDefaultInstance (neue Eigenschaften ()) erstellen; // Mimemessage -Instanzobjekt Mimemessage msg = new Mimemessage (Sitzung); // SETER SENTER MSG.SETFROM (New InternetAtaddress (von)); // Empfänger msg.setRecipients (message.RecipientType.to, InternetAddress.Parse (an)) festlegen; // Sendendatum msg.setentdate (neuer Datum ()) festlegen; // Setzen Sie das E -Mail -Betreff msg.setsubject (Betreff); // Setzen Sie den E -Mail -Körper von Klartextinhalt msg.setText (Körper); // Speichern und generieren Sie die endgültigen E -Mail -Inhalte msg.savechanges (); // Schreiben Sie den Inhalt des Mimemessage -Objekts in die Datei msg.writeto (neuer FileOutputStream ("C: //test.eml"); }}Wir verwenden den E -Mail -Client (mit Foxmail hier), um die Datei test.eml unter dem C -Laufwerk zu öffnen, und Sie können die folgenden Informationen anzeigen, was darauf hinweist, dass unsere E -Mail erfolgreich erstellt wurde.
Hier ist eine kurze Erklärung einiger der oben erscheinen Klassen, die oben erscheinen
1. MIMEMESSAGE -Klasse: Das obige eingeführte Mimemessage ist eine konkrete Implementierungsklasse der Nachrichtenklasse, mit der ein Instanzobjekt der Nachrichtenklasse erstellt wird. Hier übergibt der Konstruktor ein Sitzungsobjekt als Parameter.
2. Sitzungsklasse: Dieses Objekt wird verwendet, um Informationen zwischen Netzwerkverbindung zwischen dem Client und dem Mailserver zu sammeln und die Umgebungsinformationen zu definieren, die zur Definition des gesamten E -Mail -Programms erforderlich sind. Diese Informationen werden im Sitzungsobjekt als Attribute des Sitzungsobjekts gespeichert. Das Sitzungsobjekt verwendet das Objekt java.util.properties, um den Mailserver, den Benutzernamen, die Kennwortinformationen und die gemeinsam genutzten Informationen zu erhalten, die die gesamte Anwendung verwenden muss. Da der Konstruktor der Sitzungsklasse privat ist, verwenden wir die statische Fabrikmethode von getDefaultInstance (), die von der Sitzungsklasse bereitgestellt werden, um ein Standard -Sitzungsobjekt zu erhalten.
A. Hier wird ein leerer Satz als Parameter konstruiert;
4. Internetaddress -Klasse: Diese Klasse ist eine Unterklasse der abstrakten Klassenadressenklasse, die zum Erstellen einer E -Mail -Adresse verwendet wird.
5. Empfängertypklasse: Diese Klasse ist eine interne Klasse der Nachrichtenklasse. Diese Klasse hat 3 statische Variablen. Um den Empfänger darzustellen, repräsentiert CC den CC -Absender (der Empfänger kennt den CC -Absender) und BCC repräsentiert den Absender Secret Sender (der Empfänger kennt den Absender des Absenders nicht).
Die obige E -Mail enthält nur einfachen Text. Manchmal müssen wir HTML -Dateien verwenden, um unser E -Mail -Körper zu bereichern, z. Der folgende Code erstellt eine E -Mail mit HTML -Format
import Java.util.date; Import Java.util.Properties; Import Javax.mail.Message; Import Javax.mail.Session; main (string [] args) löst Ausnahme {String von = "[email protected]" aus; String to = "[email protected]"; String Subjekt = "test"; String body = "<h4> Willkommen, diese E -Mail </h4>" zu lesen; // Session -Instance -Objekt Session Session = Session.getDefaultInstance (neue Eigenschaften ()) erstellen; // Mimemessage -Instanzobjekt Mimemessage msg = new Mimemessage (Sitzung); // SETER SENTER MSG.SETFROM (New InternetAtaddress (von)); // Empfänger msg.setRecipients (message.RecipientType.to, InternetAddress.Parse (an)) festlegen; // Sendendatum msg.setentdate (neuer Datum ()) festlegen; // das Mail -Betreff msg.setsubject (Betreff) festlegen; // Setzen Sie das HTML -Format -E -Mail -Körper MSG.SetContent (Körper, "Text/HTML; CharSet = GB2312"); // Speichern und generieren Sie die endgültigen Mail -Inhalte msg.savechanges (); // Schreiben Sie den Inhalt des Mimemessage -Objekts in die Datei msg.writeto (neuer FileOutputStream ("C: //test.eml"); }}Wir werden Foxmail verwenden, um Test.eml und die folgende Anzeige zu öffnen
Der Unterschied zum vorherigen Code besteht darin, dass wir beim Einstellen des E -Mail -Inhalts die SETContent -Methode anstelle der SetText -Methode verwenden und den MIME -Typ des E -Mail -Körpers als Text/HTML angeben.
Jetzt haben wir gelernt, E -Mails mit HTML -Tags zu erstellen, aber manchmal müssen wir einige Bilder in die E -Mail einfügen, um unsere Bedeutung intuitiver auszudrücken. Dann müssen wir die Mimemultipart -Klasse und die Mimebodypart -Klasse verwenden
Import Java.io.FileOutputStream; Import Java.util.Properties; Import Javax.Activation.Datahandler; Import Javax.Activation.FiledataSource; Import Javax.mail.Message; Import Javax.mail. javax.mail.internet.mimebodypart; import javax.mail.internet.mimemessage; import javax.mail.internet.mimemultiPart; public class bicturemessage {public static void main (String [] args) Ausnahme {33456 @qq.com "; // Empfängeradresse String Betreff = "HTML -E -Mail"; String body = "<a href = http: //www.cnblogs.com>" + "Willkommen im Blog -Garten </a> </br>" + "<img src =/" c: //dog.jpg/ ">"; Session Session = Session.getDefaultInstance (neue Eigenschaften ()); // Erstellen Sie ein Mimemessage -Objekt und setzen Sie verschiedene Nachrichtenheaderfelder Mimemessage Message = New Mimemessage (Sitzung); Message.SetFrom (neue InternetAtaddress (aus)); message.setRecipients (Message.RecipientType.to, InternetAddress.Parse (to)); Message.Setsubject (Betreff); // Erstellen Sie ein Mimemultipart -Objekt mit Subtyp "verwandt". Mimemultipart Multipart = new Mimemultipart ("verwandt"); /** Erstellen Sie ein Mimebodypart -Objekt, das den HTML -Körper darstellt, und fügen Sie es dem früher erstellten Mimemultipart -Objekt hinzu*/ mimebodypart htmlbodypart = new Mimebodypart (); htmlbodypart.setContent (Körper, "text/html; charSet = gb2312"); MultiPart.Addbodypart (htmlbodypart); /** Erstellen Sie ein Mimebodypart -Objekt, das den Inhalt des Bildes darstellt, und fügen Sie es dem früher erstellten Mimemultipart -Objekt hinzu*/ mimebodypart gifbodypart = new Mimebodypart (); FieledataSource fds = new fileDataSource ("c: //dog.jpg"); gifbodypart.setFileName (fds.getName ()); gifbodypart.setDatahandler (New Datahandler (FDS)); Multipart.Addbodypart (Gifbodypart); /** Setzen Sie das Mimemultipart -Objekt auf den Inhalt der gesamten Nachricht, achten Sie darauf, die Savechanges -Methode für Updates zu rufen*/ message.setContent (Multipart); Message.Savechanges (); // Schreiben Sie den Inhalt des Mimemessage -Objekts in die Datei meldung.writeto (neuer FileOutputStream ("c: //picturemessage.eml")); }}Der Code scheint etwas kompliziert zu sein. Sie können sich das Beziehungsdiagramm der oben genannten Mimemessage, Mimemultipart und Mimebodypart ansehen. Dadurch wird es einfacher, den obigen Code zu verstehen. Wir öffnen picturemessage.eml und sehen die folgenden Informationen an, aus denen hervorgeht, dass wir eine E -Mail mit einem Bild erfolgreich erstellt haben, und das Bild ist in Form eines Anhangs in der E -Mail enthalten.
Mimemultipart hat zwei Konstruktoren.
public mimemultipart () öffentlich mimemultiPart (String -Subtyp)
Der erste ist parameterlos und das Standardinstanzobjekt hat einen MIME -Typ gemischt. Der zweite formuliert einen Typ, um ein Instanzobjekt der Mimemultipart -Klasse zu erstellen. Es gibt drei häufig verwendete Typen: gemischt, verwandt und alternativ. Die Kombinationsbeziehung dieser drei Typen in MIME ist wie folgt:
Jetzt verwenden wir die oben gezeigte Kombinationsbeziehung, um eine Nachricht mit einem Anhang und einer eingebetteten Ressource im Körper zu erstellen.
Import Java.io.FileOutputStream; Import Java.util.Properties; Import Javax.Activation.Datahandler; Import Javax.Activation.FiledataSource; Import Javax.mail.Message; Import Javax.mail. javax.mail.internet.mimebodypart; import javax.mail.internet.mimemessage; import javax.mail.internet.mimemultipart; public class complexMessage {public static void main (String [] args) Ausnahme {Session Session.getDefaultIntance (New Propertance (New Propertance)); Mimemessage message = CreateMessage (Sitzung); message.writeto (neuer FileOutputStream ("c: //complexMessage.eml")); } public static mimemessage createmessage (Sitzungssitzung) löst Ausnahme aus {String von = "[email protected]"; // Absender Adresszeichenfolge an = "[email protected]"; // Empfängeradresse String Betreff = "HTML -E -Mail"; // E -Mail -Betreff String body = "<a href = http: //www.cnblogs.com>" + "Willkommen im Blog Park </a> </br>" + "<img src =/" c: //dog.jpg/ ">"; Mimemessage message = new Mimemessage (Sitzung); Message.SetFrom (neue InternetAtaddress (aus)); message.setRecipients (Message.RecipientType.to, InternetAddress.Parse (to)); Message.Setsubject (Betreff); // Erstellen Sie jedes Mimebodypart -Objekt, das den Meldungskörper und den Anhang mimebodypart contentPart = createContent darstellt (Körper, "c: //dog.jpg"); // Der folgende Anhang kann Video- oder Audio -MimebodyPart -Attachter sein, CreateatTachment ("c: //music.mp3"); Mimebodypart AttachPart2 = createatTachment ("c: //video.avi"); // Erstellen Sie ein mimemultipart -Objekt zum Kombinieren des Meldungskörpers und des Anhangs mimemultipart Allmultipart = new mimemultipart ("gemischt"); AllmultiPart.Addbodypart (contentPart); AllmultiPart.Addbodypart (AttachPart1); AllmultiPart.Addbodypart (AttachPart2); // Setzen Sie den gesamten E -Mail -Inhalt auf die endgültige kombinierte Mimemultipart -Objektmeldung.SetContent (Allmultipart); Message.Savechanges (); Meldung zurückgeben; } public static mimebodypart createContent (String body, String Dateiname) löst Ausnahme aus { /** Erstellen Sie ein MimemultiPart -Objekt, das die kombinierte MIME -Nachricht darstellt, und das Mimebodypart -Objekt, dem das MimemultiPart -Objekt gespeichert ist* / mimebodypart contentPart = new mimebodypart (); Mimemultipart contentMultipart = new mimemultipart ("verwandt"); /** Erstellen Sie ein Mimebodypart -Objekt, um den HTML -Körper zu speichern und es für mimemultipart zu retten htmlbodypart.setContent (Körper, "text/html; charSet = gb2312"); contentMultiPart.addbodypart (htmlbodypart); /** Erstellen Sie ein Mimebodypart -Objekt, um das Bild zu speichern und es für mimemultipart*/ mimebodypart gifbodypart = new Mimebodypart () zu speichern; FieledataSource fds = new fileDataSource (Dateiname); gifbodypart.setDatahandler (New Datahandler (FDS)); contentMultiPart.addbodypart (Gifbodypart); // Speichern Sie das Mimemultipart -Objekt in dem Mimebodypart -Objekt contentPart.setContent (contentMultiPart); ContentPart zurückgeben; } public static miMebodypart createAttachment (String -Dateiname) löst Ausnahme aus {// Erstellen Sie ein Mimebodypart -Objekt, das den Anhang speichert, und fügen Sie den Anhangsinhalt und die entsprechenden Informationen MimebodyPart Attattart = new miMebodypart () hinzu; FieledataSource fds = new fileDataSource (Dateiname); CattelPart.SetDatahandler (New Datahandler (FDS)); CattelPart.SetFileName (fds.getName ()); Anhang zurückgeben; }}Öffnen Sie die Datei complexMessage.eml und Sie können den folgenden Inhalt sehen:
Jetzt haben wir gelernt, wie man eine einfache Text -E -Mail, eine E -Mail mit HTML -Format und eine E -Mail mit eingebetteten Bildern und Anhängen erstellt. In dem nächsten Artikel wird vorgestellt
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.