Verwenden Sie Javamail, um E-Mails zu senden, das erforderliche JAR-Paket (bitte laden Sie die Quelldatei von Javamail, die offizielle Download-Seite herunter: http://www.oracle.com/technetwork/java/javamail/index-138643.html):
Mailapi.jar. Definiert die Schnittstellen -API, die zum Senden und Empfangen von E -Mails verwendet wird.
SMTP.JAR. Enthält die Klasse, mit der E -Mails gesendet wurden.
Pop3.jar. Beinhaltet die Klasse, mit der E -Mails erhalten wurden.
Das Protokoll, das wir normalerweise zum Senden von E -Mails verwenden, ist das SMTP -Protokoll, und das Protokoll, mit dem wir E -Mails akzeptieren, ist das POP3 -Protokoll. Oder wir fügen dem Projekt, das alle Schnittstellen und Klassen für Java -Senden und Empfangen von E -Mails enthält, direkt mail.jar hinzu.
Häufig verwendete Klassen:
Senden Sie eine E -Mail
Im Folgenden werde ich zunächst das einfachste kleine Testbeispiel für das Senden von E -Mails in Java auflisten:
Import Java.util.Properties; import Javax.mail.address; Javax.Mail.Message importieren; Javax.Mail.MessagingException importieren; Javax.Mail.Session importieren; importieren javax.mail.transport; import javax.mail.internet.interneTadDress; importieren javax.mail.internet.mimemessage; /** * * qq (mail.qq.com): POP3 -Server (Port 995) SMTP -Server (Port 465 oder 587). * */ public class Demo1 {/ ** * @param args * @throws MessagingException */ public static void main (String [] args) löst MessagingException aus {String sendusername = "[email protected]"; String sendPassword = "pwd"; Eigenschaften Eigenschaften = neue Eigenschaften (); Properties.setProperty ("mail.smtp.auth", "true"); // Der Server muss die Eigenschaften authentifizieren. Session.setDebug (true); // stimmen zu, die Konversationsinformationen mit dem Server auf der Konsole der aktuellen Thread -Nachricht zu drucken. transport.connect ("SMTP.126.com", 25, sendUnername, sendPassword); // Verbinde den Sender Server transport.sendMessage (Nachricht, neue Adresse [] {new InternetAddress ("[email protected]")}); // E -Mail -E -Mail -Annahme von transport.close (); }}Im Allgemeinen verwenden wir Authenticator, um den Benutzernamen und das Passwort, das undurchsichtig ist, zu verkörpern! Also:
import Javax.mail.Authenticator; Javax.Mail.Message importieren; Javax.Mail.MessagingException importieren; Javax.Mail.PasswordAuthentication importieren; Javax.Mail.Session importieren; importieren javax.mail.transport; importieren javax.mail.internet.address; import javax.mail.internet.interneTadDress; importieren javax.mail.internet.mimemessage; Import JUNIT.Framework.TestCase; /*** Javamail senden Sie E -Mail* @author Championship Wong* message.adDecipient (Message.Recipient -Empfänger, Adressadresse); Geben Sie die Rollen des Empfängers und des Empfängers an, wenn Sie eine E -Mail* message.recipientType.toempfänger* message.recipientType.cc CC, dh an eine andere Person, beim Senden einer E -Mail ohne Beantwortung einsetzt! Der oben erwähnte Empfänger kann jedoch sehen, wer Sie kopiert haben. Im Gegensatz zu dem oben genannten Empfänger kann der Empfänger jedoch nicht sehen, wen Sie heimlich an * */ Public Class Demo2 testcase {private statische String -String -Sendususername = "[email protected]"; // Benutzername des Servers, das angeschlossen werden muss, um ein privates Send -Send -Send -Send -Send -Send -Send -Send -Send -Send -Send -Send -Send -Send -Send -Send -Send -Send -Send -Send -Send -Send -Send -Send -Send -Send -Send -Send -Send -Send -Send -Send -Send -Send -Send -Send -Send -Send -Send -Send -Send -Send zu senden. = "SMTP"; // Port zum Senden von Mail private statische endgültige Zeichenfolge sendhostaddress = "SMTP.126.com"; // Die Adresse des Servers zum Senden von E -Mails public void test () löst die Adressierung aus, MessagingException {Properties Properties = neue Eigenschaften (); Properties.setProperty ("mail.smtp.auth", "true"); // Der Server muss die Eigenschaften authentifizieren. Session.getInstance (Eigenschaften, neuer Authenticator () {Protected PasswordAuthentication getPasswordAuthentication () {Neue PasswordAuthentication zurückgeben (sendUserName, sendPassword);}}); Session.setDebug (true); // Echtzeitinformationen zum Senden der E-Mail in der Hintergrundnachricht = new mimemessage (Sitzung); message.setfrom (neue InternetAddress ("[email protected]")); Message.Setsubject ("Demo2javacode Senden von E -Mail -Tests, Verwenden von Authenticator"); // Setzen Sie die Themenmeldung.setRecipients (Message.RecipientType.to, InternetAddress .Parse ("[email protected], [email protected]"). .Parse ("[email protected]"); // cc message .SetContent ("<span style =" font-size: 20px; color: #ffccff "mce_style =" font-size: 20px; color: #ffccff "Wenn man sieht, dass es der Test war! "text/html; charSet = gbk"); Transport.Send (Nachricht); // E -Mail senden}} Wir senden eine relativ komplexe E -Mail, einschließlich Anhänge, Bilder und Texte:
importieren java.io.filenotfoundException; importieren java.io.fileoutputStream; importieren java.io.ioException; importieren java.io.outputstream; Import Java.util.Properties; Import Javax.Activation.Datahandler; import Javax.Activation.DataSource; Import Javax.Activation.Filedatasource; import Javax.mail.Authenticator; Javax.Mail.MessagingException importieren; Javax.Mail.PasswordAuthentication importieren; Javax.Mail.Session importieren; importieren javax.mail.transport; import javax.mail.message.RecipientType; import javax.mail.internet.interneTadDress; import javax.mail.internet.mimebodypart; importieren javax.mail.internet.mimemessage; import javax.mail.internet.mimemultipart; importieren javax.mail.internet.mimeutility; /** * * @Author Administrator Mr XP.Wang * Mimemultipart Der allgemeine E -Mail -Container ist ein Multipart, der Methoden zum Hinzufügen und Löschen verschiedener Teile der E -Mail definiert. * Es handelt sich jedoch um eine abstrakte Klasse, und seine Unterklasse Mimemultipart muss für das Mimemessage -Objekt verwendet werden. Das Mimebodypart -Objekt repräsentiert einen * jeden Teil des Mimemultipart -Objekts * Mimeutility.Codetext (String CN), um das Problem des chinesischen verstümmelten Codes in den Headerinformationen in der E -Mail * */ öffentliche Klasse Demo3_test {public static void Main (String [] Args) auszusetzen {Properties profitenties profitenties = New Properties (). Properties.setProperty ("mail.smtp.auth", "true"); // Der Server muss die Eigenschaften authentifizieren. Session.getInStance (Eigenschaften, neuer Authenticator () {String sendUnername = "[email protected]"; String sendPassword = "pwd"; geschützte kennwortAuthentifizierung getPasswordAuthentication () {neue PasswordAuthentication (sendUnername, sendPassword);}}); Session.setDebug (true); Mimemessage msg = new Mimemessage (Sitzung); // eine E -Mail -Body msg.setfrom (New InternetAddress ("/" "+mimeutility.encodetext (" Mr xp.wang ")+"/"<[email protected]>"); msg.setsubject ("Dies ist meine erste komplizierte E -Mail"); // Setzen Xiangpan ")+" <[email protected]>, "+mimeutility.encodetext (" Sanmao ")+" <[email protected]> "); Mimemultipart msgmultiPart = new mimemultipart ("gemischt"); // Geben Sie die Kombination der E -Mail an, die gemischte Beziehung msg.setContent (msgmultiPart); // Setzen Sie das E -Mail -Body -Mimebodypart -Anhang mit dem E -Mail -Body -Bodypart. neuer mimebodypart (); // Der Text der E -Mail, eine Mischung (Bild + Text) // Setzen Sie den Anhang und den Text in dieses E -Mail -Körper -MSGMultipart.Addbodypart (Attch1); msgmultipart.addbodypart (Attch2); msgmultipart.addbodypart (Inhalt); // Setzen Sie den ersten Anhang DataSource ds1 = new fileedatasource ("f: /Accp5.0/file/sssh configuration Attch1.SetFileName ("ssh.txt"); // Setzen Sie den zweiten Anhang DataSource ds2 = new fileedatasource ("ressourcen/48.jpg"); // die Datenquelle des Anhangs DataHandler dh2 = neuer DataHandler (ds2); // Anhangsinformationen bei ATTEM2.SetDatahandler (DH2); // Anhang bei ATTEMMENT 22.SetFilename ("48.PG"); // Setzen Sie den Text der E -Mail mimemultipart bodyMultipart = new mimemultiPart ("verwandt"); // Abhängigkeitsinhalt.SetContent (BodyMultiPart); // Body Mimebodypart htmlPart = new mimebodypart (); Mimebodypart gifPart = new Mimebodypart (); BodyMultiPart.Addbodypart (htmlPart); BodyMultipart.Addbodypart (GifPart); DataSource GIFDS = NEU FAGEEDATEURCE ("Ressource/48.jpg"); // Setzen Sie das Bild des Textes DataHandler gifdh = new Datahandler (GIFDS); gifPart.setheader ("Inhalts-", "http://mimg.126.net/logo/126Logo.gif"); gifPart.setDatahandler (Gifdh); // Setzen Sie das Bild des Textes htmlPart.setContent ("Ich bin nur hier, um eine Sojasauce zu machen, dies ist mein Bildfoto! "text/html; charSet = gbk"); // Setzen Sie den Text msg.savechanges (); // Speichern Sie die E -Mail // die E -Mail als Dateiausgabestream ops = new FileOutputStream ("c: /Users/administrator/desktop/test.eml"); MSG.Writeto (OPS); ops.close (); Transport.Send (MSG); }} E -Mails erhalten
Beispiel: Rose sammelt die neueste E -Mail.
Import Java.util.date; Import Java.util.Properties; Import Javax.mail.Folder; Import Javax.mail.Message; Import Javax.Mail.MessagingException; Import Javax.Mail main (string [] args) {String protocol = "pop3"; boolean issl = true; String host = "pop.163.com"; int port = 995; String username = "[email protected]"; String password = "rose"; Eigenschaften props = neue Eigenschaften (); props.put ("mail.pop3.Ssl.enable", Isssl); props.put ("mail.pop3.host", host); props.put ("mail.pop3.port", port); Session Session = Session.getDefaultInstance (Requisiten); Store Store = null; Ordnerordner = null; try {store = session.getStore (Protokoll); store.connect (Benutzername, Passwort); order = store.getFolder ("Posteingang"); order.open (order.read_only); int size = order.getMessageCount (); Message message = order.getMessage (Größe); String von = message.getfrom () [0] .ToString (); String -Subjekt = message.getSubject (); Datum Datum = message.getSentDate (); System.out.println ("von:" + von); System.out.println ("Subjekt:" + Subjekt); System.out.println ("Datum:" + Datum); } catch (nosuchproviderexception e) {e.printstacktrace (); } catch (MessagingException e) {e.printstacktrace (); } endlich {try {if (order! = null) {order.close (false); } if (store! = null) {store.close (); }} catch (MessagingException e) {e.printstacktrace (); }} System.out.println ("empfangen!"); }}