Utilisez Javamail pour envoyer des e-mails, le package JAR requis (veuillez télécharger le fichier source de Javamail, la page de téléchargement officielle: http://www.oracle.com/technetwork/java/javamail/index-138643.html):
Mailapi.jar. Définit l'API de l'interface utilisée pour envoyer et recevoir des e-mails;
Smtp.jar. Contient la classe utilisée pour envoyer des e-mails;
Pop3.jar. Comprend la classe utilisée pour recevoir des e-mails;
Le protocole que nous utilisons généralement pour envoyer des e-mails est le protocole SMTP, et le protocole que nous utilisons pour accepter les e-mails est le protocole POP3. Ou, nous ajoutons directement Mail.jar au projet, qui contient toutes les interfaces et classes pour l'envoi Java et la réception du courrier.
Cours couramment utilisés:
Envoyer un e-mail
Ci-dessous, je vais d'abord énumérer le petit test le plus simple de l'envoi d'e-mails en Java:
import java.util.properties; import javax.mail.address; import javax.mail.mesage; Importer javax.mail.messagingException; Importer Javax.mail.Session; Importer javax.mail.transport; Importer javax.mail.internet.internetAddress; Importer javax.mail.internet.mimeMessage; / ** * * qq (mail.qq.com): serveur POP3 (port 995) SMTP Server (port 465 ou 587). * * / public class Demo1 {/ ** * @param args * @throws messingException * / public static void main (String [] args) lève MessageSingException {String sendUserName = "[email protected]"; String SendPassword = "PWD"; Propriétés Properties = New Properties (); Properties.SetProperty ("mail.smtp.auth", "true"); // Le serveur doit authentifier les propriétés.setProperty ("Mail.transport.protocol", "smtp"); // Déclare le port utilisé pour envoyer l'e-mail Session = Session.getInstance (Properties); session.setdebug (true); // accepte d'imprimer les informations de conversation avec le serveur sur la console du message de thread actuel Message = new MIMEMSSAGE (Session); // Construire le message du message envoyé.settext ("Hello, je suis champion.wong!"); // Informations Content Message.SetFrom (New InternetAddress ("[email protected]")); // Sender Transport = Sesder = Sesder. transport.connect ("smtp.126.com", 25, sendUsername, sendpassword); // connecter le serveur de expéditeur transport.sendMessage (message, nouvelle adresse [] {new InternetAddress ("[email protected]")}); // accepter le courriel transport.close (); }}Généralement, nous utilisons Authenticator pour résumer le nom d'utilisateur et le mot de passe, qui est opaque! donc:
import javax.mail.authenticator; import javax.mail.mesage; Importer javax.mail.messagingException; Importer javax.mail.passwordAuthentication; Importer Javax.mail.Session; Importer javax.mail.transport; Importer javax.mail.internet.address; Importer javax.mail.internet.internetAddress; Importer javax.mail.internet.mimeMessage; Importer Junit.Framework.TestCase; / ** * Javamail Envoyer un e-mail * @author Championship Wong * Message.AdDrecicipient (Message.Réliférant, adresse d'adresse); Spécifiez les rôles du destinataire et du destinataire lors de l'envoi d'un e-mail * Message.RecipientType.to destinataire * message.recientType.cc CC, c'est-à-dire copier un à une autre personne lors de l'envoi d'un e-mail, sans répondre! Cependant, le destinataire ci-dessus peut voir qui vous avez copié pour * message.recipentType.BCC envoie secrètement, et il s'agit également d'envoyer une copie à une autre personne lors de l'envoi d'un e-mail. Cependant, contrairement à ce qui précède, le destinataire ne peut pas voir qui vous avez secrètement donné à * * / public class Demo2 étend TestCase {private static final String sendUsername = "[email protected]"; // le nom d'utilisateur du serveur qui doit être connecté pour envoyer un e-mail statique privé String String Sendpassword = "pwd" sendProtoCol = "smtp"; // port utilisé pour envoyer un courrier final statique privé String final sendhostaddress = "smtp.126.com"; // L'adresse du serveur utilisé pour envoyer le courrier public void test () lève la conception d'adresse, messageException {Properties Properties = new Properties (); properties.setProperty("mail.smtp.auth", "true");// The server needs to authenticate properties.setProperty("mail.transport.protocol", sendProtocol);// Declare the port used to send mail properties.setProperty("mail.host", sendHostAddress);// The server address for sending the mail Session session = Session.getInstance (Properties, New Authenticator () {Protected PasswordAuthentication GetPasswordAuthentication () {return new PasswordAuthentication (sendUserName, sendPassword);}}); session.setDebug (true); // imprime les informations en temps réel sur l'envoi du courrier dans le message du message d'arrière-plan = new MimeMessage (session); message.setFrom (new InternetAddress ("[email protected]")); Message.SetSubject ("Demo2Javacode Envoi du test de messagerie, utilisant l'authenticatrice"); // définir le sujet message.SetRcipients (message.recipentType.to, InternetAddress .Parse ("492134880 @ qq.com, wangxiangpan @ 126.com")); // Envoyer Message.SetRecicipients (message.recivicienty. .parse ("[email protected]")); // CC Message .setContent ("<span style =" font-size: 20px; couleur: #ffccff "mCE_STYLE =" Font-size: 20px; Color: #ffccff "> Si vous le voyez, cela prouve que le test a réussi! "text / html; charset = gbk"); Transport.send (message); // Envoyer un e-mail}} Nous envoyons un e-mail relativement complexe, y compris des pièces jointes, des images et des SMS:
import java.io.filenotfoundException; Importer java.io.fileOutputStream; Importer java.io.ioException; import java.io.outputStream; import java.util.properties; import javax.activation.datahandler; import javax.activation.datasource; Importer Javax.Activation.FileDataSource; import javax.mail.authenticator; Importer javax.mail.messagingException; Importer javax.mail.passwordAuthentication; Importer Javax.mail.Session; Importer javax.mail.transport; Importer javax.mail.message.recipentType; Importer javax.mail.internet.internetAddress; Importer javax.mail.internet.mimeBodyPart; Importer javax.mail.internet.mimeMessage; Importer javax.mail.internet.mimemultupartit; Importer javax.mail.internet.mimeutility; / ** * * @Author Administrator Mr XP.Wang * MIMEMULPART Le conteneur général de l'e-mail est Multipart, qui définit des méthodes pour ajouter et supprimer diverses parties de l'e-mail. * Cependant, il s'agit d'une classe abstraite, et sa sous-classe MIMEMULPART doit être utilisée pour l'objet MimeMessage * MIMEBODYPART est une sous-classe de bodyPart spécifiquement utilisé pour MimeMessage. L'objet MIMEBODYPART représente une * partie de l'objet MIMEMULPART * mimeutility.encodeText (String CN) est utilisée pour résoudre le problème du code chinois brouillé dans les informations d'en-tête dans l'e-mail * * / classe publique Demo3_Test {public static void main (String [] args) lance Exception {Properties Properties = New Properties ();); Properties.SetProperty ("Mail.smtp.auth", "True"); // Le serveur doit authentifier Properties.SetProperty ("Mail.transport.protocol", "SMTP"); // Déclare le port utilisé pour envoyer des propriétés Mail. Session.getInstance (Properties, New Authenticator () {String sendUserName = "[email protected]"; String Sendpassword = "PWD"; PasswordAuthentication protégée GetPasswordAuthentication () {return new PasswordAuthentication (sendUserName, sendPassword);}}); session.setDebug (true); MimeMessage msg = new mimeMessage (session); // Déclare un corps de messagerie msg.setFrom (new InternetAddress ("/" "+ mimeutility.encodext (" mr xp.wang ") +" / "<[email protected]>")); msg.setsubject ("Ceci est mon premier e-mail compliqué"); // Définissez le sujet de messagerie MSG.SetRcipients (mimeMessage.recipentType.to, InternetAddress.Parse (Mimeutility.EncodeText ("Wang Xiangpan ") +" <[email protected]>, "+ mimeutility.encodetext (" Sanmao ") +" <[email protected]> ")); MimeMultupart msgMultupart = new mimeMultupart ("mixtes"); // indique la relation combinée de l'e-mail, la relation mixte msg.setContent (msgmultupar); // définir le corps de messagerie mimebodypart joint1 = new MIMEBODPART (); // attachement 1 mimeBodyPart contenu co-mimebodyParte (); // MIMEBODYPART (); // Le texte de l'e-mail, un mélange (image + texte) // Définissez la pièce jointe et le texte dans ce corps e-mail msgMultiplart.addbodyPart (ATTCH1); msgMultupar.AddbodyPart (ATTCH2); msgMultupart.addbodyPart (contenu); // Définissez la première pièce jointe DataSource DS1 = new FileDataSource ("f: /ACCP5.0/file/ssh configuration.txt"); // spécifiez la source de données de la pièce jointe Datahandler DH1 = new Datahandler (DS1); // Spécifiez les informations jointes aux attaches attch1.setFileName ("ssh.txt"); // Définissez la deuxième pièce jointe DataSource DS2 = new FileDataSource ("Resource / 48.jpg"); // spécifiez la source de données de la pièce jointe Datahandler DH2 = nouveau Datahandler (DS2); // Informations de pièce jointe. // Définissez le texte de l'e-mail mimeMultuparpart bodyMultupart = new MIMEMULUPART ("lié"); // Dependency Content.SetContent (BodyMultiPart); // Spécifiez Body MimeBodyPart htmlPart = new MIMEBodyPart (); MIMEBODYPART GIFPART = new MIMEBODYPART (); bodyMultipart.addbodyPart (htmlpart); BodyMultipartit.AddBodyPart (GifPart); DataSource Gifds = new FiledAdAtaSource ("Resource / 48.jpg"); // définit l'image du texte datahandler gifdh = new Datahandler (gifds); gifpart.sethEader ("Content-Location", "http://mimg.126.net/logo/126logo.gif"); gifpart.setDatahandler (gifdh); // définissez l'image du texte htmlpart.setContent ("Je suis juste là pour faire une sauce de soja, c'est ma photo d'image! "text / html; charset = gbk"); // définir le texte msg.savechanges (); // Enregistrer l'e-mail // Enregistrez l'e-mail sous le fichier OPSSTRESTREAM OPS = new FileOutputStream ("c: /users/administrator/desktop/test.eml"); msg.writeTo (OPS); ops.close (); Transport.send (msg); }} Recevoir des e-mails
Exemple: Rose recueille le dernier e-mail.
Importer java.util.date; import java.util.properties; import javax.mail.folder; import javax.mail.message; import javax.mail.messagingException; import javax.mail.nosuchproviderexception; import javax.mail.session; importer javax.mail.store; classe publique Fetchmail {public static static javax.mail.store; main (String [] args) {String protoCol = "POP3"; booléen isssl = true; String host = "pop.163.com"; int port = 995; String username = "[email protected]"; Chaîne mot de passe = "rose"; Properties props = news properties (); props.put ("mail.pop3.ssl.enable", isssl); propuls.put ("mail.pop3.host", hôte); propuls.put ("mail.pop3.port", port); Session session = session.getDefaultInstance (accessoires); Magasin de magasin = null; Dossier de dossier = null; essayez {store = session.getStore (protocole); store.connect (nom d'utilisateur, mot de passe); dossier = store.getFolder ("Inbox"); dossier.open (dossier.read_only); int size = dossier.getMessageCount (); Message message = dossier.getMessage (taille); String from = message.getFrom () [0] .ToString (); String sujet = message.getSubject (); DATE DATE = Message.getSentDate (); System.out.println ("de:" + from); System.out.println ("Sujet:" + Sujet); System.out.println ("Date:" + Date); } catch (NosuchProvideRexception e) {e.printStackTrace (); } catch (MessageSingException e) {e.printStackTrace (); } enfin {try {if (Folder! = null) {Folder.close (false); } if (store! = null) {store.close (); }} Catch (MessagedException e) {e.printStackTrace (); }} System.out.println ("reçu!"); }}