Dans une utilisation réelle, par exemple, si vous magasinez sur Taobao et demandez un remboursement, vous verrez un e-mail de remboursement dans votre adresse e-mail, ou si vous enregistrez un compte, demandez la vérification de la notification par e-mail, etc. Ce sont tous des e-mails. Ici, introduira le cas de la transmission des e-mails anormaux par le système.
Préparation:
eclipse4.5 64 bits
JDK1.7 64 bits
Le pot requis envoie le courrier:
Fastjson-1.1.24.jar, javax.mail-1.5.6.jar
Développeur de classe:
Type d'énumération, nom de l'expéditeur et adresse e-mail
Courrier des forfaits; /** * @class:Developer *@descript: Enumeration type, sender's name and email address*@date: October 26, 2016 at 8:07:50 pm *@author sanghaiqin *@version:V1.0 */ public enum Developer { zhoujing("Zhou Jing","[email protected]"), peiyuxiang("Pei Yuxiang "," [email protected] "), yipeng (" ypeng "," [email protected] "), liuan (" liu an "," [email protected] "), chenyuhao (" Chen yuhao "," [email protected] ")," Wangd "," [email protected] ")," Wangd "," [email protected] "), Wangd (Wangd". Dong "," [email protected] "), Sanghaiqin (" Sang Haiqin "," [email protected] "); // Nom de l'expéditeur Nom de la chaîne privée; // Sender Email Private String Mail; Developer privé () {} développeur privé (nom de chaîne, courrier de chaîne) {this.name = name; this.mail = mail; } / ** * @Descript: passez le nom de l'expéditeur pour recevoir l'e-mail de l'expéditeur * @param nom de l'expéditeur * @return * / public static String getmail (String name) {for (développeur c: Developer.Values ()) {if (c.getName (). Equals (name)) {return c.mail; }} return null; } public String getName () {Nom de retour; } public void setName (string name) {this.name = name; } public String getmail () {return mail; } public void setmail (chaîne mail) {this.mail = mail; }} Classe ExceptionInfo: Informations de l'expéditeur
Courrier des forfaits; / ** * @class: exceptionInfo * @ Descript: Informations de l'expéditeur * @ Date: 26 octobre 2016 à 8:11:27 PM * @ auteur Sanghaiqin * @ Version: V1.0 * / classe publique ExceptionInfo {// Nom de l'expéditeur Développeur de chaînes privées; // Méthode de l'expéditeur Méthode de chaîne privée; // URL de l'expéditeur URL de chaîne privée; // Sender attrape des informations d'exception exception privée E; / ** * @Param Developer Sender Nom * @param Méthode Méthode Sender * @param URL Sender URL * @param e Sender attrape des informations d'exception * / public exceptionInfo (STRING Developer, Method String, URL de chaîne, exception e) {super (); this.developer = développeur; this.method = méthode; this.url = url; this.e = e; } public String getDeveloper () {return Developer; } public void setDevenerer (string développeur) {this.developer = développeur; } public String getMethod () {return Method; } public void setMethod (méthode de chaîne) {this.method = méthode; } public String getUrl () {return url; } public void setUrl (string url) {this.url = url; } exception publique gete () {return e; } public void sete (exception e) {this.e = e; }} MailSendenfo: Envoyez des informations par e-mail
Courrier des forfaits; import java.util.properties; / ** * @class: MailSenderInfo * @ Descript: Envoyer des informations par e-mail * @ Date: 26 octobre 2016 à 8:14:22 PM * @ Auteur Sanghaiqin * @ Version: V1.0 * / Classe publique MailSenderInfo {// La chaîne privée IP MailServerHost du serveur envoyant le courrier; // Le port du serveur envoyant le courrier est de 25 chaînes privées MailServerport = "25"; // L'adresse de l'expéditeur de la chaîne privée de courrier FromAddress; // L'adresse du bénéficiaire de messagerie Private String Toaddress; // Connectez-vous au nom d'utilisateur du nom d'utilisateur du serveur envoyant le nom d'utilisateur du serveur; // Connectez-vous au mot de passe de la chaîne privée de mot de passe du serveur envoyant le courrier; // avez-vous besoin d'authentification privée boolean valide = false; // Envoyez un e-mail à la chaîne privée Sujet; // Contenu texte du contenu de la chaîne privée de courrier; // Nom de fichier de la chaîne privée de la pièce jointe par courrier [] attachfileNames; MailSenSenSenSinfo () {Super (); } public String getmailServerHost () {return MailServerHost; } public void setMailServerHost (String MailServerHost) {this.mailServerHost = MailServerHost; } public String getmailServerport () {return MailServerport; } public void SetMailServerport (String MailServerport) {this.mailServerport = MailServerport; } public boolean isValidate () {return validate; } public void setValidate (boolean valide) {this.validate = valider; } public String [] getAttachFileNames () {return attachFileNames; } public void setAttachFileNames (String [] fileNames) {this.attachFileNames = fileNames; } public String getFromAddress () {return fromAddress; } public void setFromAddress (String FromAddress) {this.fromAddress = FromAddress; } public String getPassword () {return mot de passe; } public void setPassword (String Motword) {this.password = mot de passe; } public String getToAddress () {return toAddress; } public void setToAddress (String toaddress) {this.toaddress = toaddress; } public String getUserName () {return username; } public void setUsername (String username) {this.userName = username; } public String getSubject () {return sujet; } public void setSubject (String Subject) {this.subject = sujet; } public String getContent () {return Content; } public void setContent (chaîne textContent) {this.Content = textContent; } / ** * @Descript: recevoir une propriété de session par e-mail * @return * / public Properties getProperties () {PropertyUtil PropertyUtil = new PropertyUtil (); Propriétés Properties = PropertyUtil.ReadProperties (); les propriétés de retour; }} Class MyAuthenticator: Authenticatrice de l'utilisateur
Courrier des forfaits; import javax.mail.authenticator; Importer javax.mail.passwordAuthentication; / ** * @class: MyAuthenticator * @ Descript: Vérification de l'utilisateur * @ Date: 26 octobre 2016 à 8:57:45 PM * @ Auteur Sanghaiqin * @ Version: V1.0 * / public class MyAuthenticator étend l'authentificateur {// username string username = null; // Mot de passe String Password = NULL; public myAuthenticator () {} public myAuthenticator (String username, String Motway) {this.userName = username; this.password = mot de passe; } Protected PasswordAuthentication GetPasswordAuthentication () {return new PasswordAuthentication (nom d'utilisateur, mot de passe); }} Classe PropertyUtil: Obtenez la classe d'outils de fichiers Propriétés
Courrier des forfaits; import java.io.fileInputStream; import java.io.filenotfoundException; Importer java.io.ioException; import java.io.inputStream; import java.util.properties; / ** * @class: PropertyUtil * @ Descript: Obtenir des propriétés Classe d'outils de fichiers * @ Date: 26 octobre 2016 à 8:20:10 PM * @ Auteur Sanghaiqin * @ Version: V1.0 * / Classe publique PropertyUtil {/ ** * @Descript: Chargeing Resource File InputStream inputStream = null; Propriétés Properties = New Properties (); // Utilisez InputStream pour obtenir un fichier de ressources essayez {inputStream = new FileInputStream (Ressources); // Chargez le fichier de configuration Properties.Load (InputStream); } catch (filenotFoundException e) {e.printStackTrace (); } catch (ioException e) {e.printStackTrace (); } enfin {if (inputStream! = null) {try {inputStream.close (); } catch (ioException e) {e.printStackTrace (); }} Return Properties; } / ** * @Descript: Lire le fichier de propriété * @return * @throws filenotfoundException * / public Properties readProperties () {String Resources = PropertyUtil.class.getClassLoader (). getResource ("prop.properties"). getPath (); Propriétés Properties = LoadProperties (ressources); les propriétés de retour; } / ** * @descript: test * @param args * / public static void main (String [] args) {propertyUtil p = new PropertyUtil (); Propriétés Pro = P.ReadProperties (); String MailSenderUserName = (String) pro.get ("Mail.Sender.Username"); System.out.println ("Mail Sender Username:" + MailSenderUsername); // [email protected] String Path = PropertyUtil.class.getClassLoader (). GetResource ("prop.properties"). GetPath (); System.out.println (path); // /g:/workspaces4.4/test/bin/prop.properties}} Fichier de ressources Pro.Properties:
# ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- # Adresse e-mail de l'expéditeur [email protected]
Classe Javamail: Envoyez la boîte aux lettres
Courrier des forfaits; import java.io.printwriter; import java.io.stringwriter; Importer java.io.UNSUPPORTEDENCODINGException; Importer java.net.inetAddress; import java.net.unknownhostException; Importer java.util.date; import java.util.properties; import javax.activation.datahandler; import javax.activation.datasource; Importer Javax.Activation.FileDataSource; import javax.mail.address; Importer Javax. javax.mail.bodypart; import javax.mail.mesage; Importer javax.mail.messagingException; Importer javax.mail.multupart; Importer Javax.mail.Session; Importer javax.mail.transport; 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; /** * @class:JavaMail *@descript:Jar package required to send information mailbox*: *fastjson-1.1.24.jar *javax.mail-1.5.6.jar *@date: October 26, 2016 at 8:13:05 pm *@author sanghaiqin *@version:V1.0 */ public class JavaMail { public static void sendExceptionMail(ExceptionInfo info){ try {// Recevez l'e-mail de l'expéditeur via la chaîne de l'expéditeur Mail = Developer.GetMail (info.getDeveloper ()); if (mail! = null) {MailSenSenSinfo MailInfo = new MailSenSenderInfo (); //Set the text content of the email mailInfo.setContent("Responsible: "+info.getDeveloper()+"==>Server ip:"+InetAddress.getLocalHost().getHostAddress()+"==>Method name: "+info.getMethod()+"==>Address: "+info.getUrl()+"==>Exception information: "+ getEMessage (info.gete ())); // Définissez l'adresse du destinataire de messagerie MailInfo.SetToAddress (Mail); // Email Subject MailInfo.SetSubject ("Notification d'exception Yika Aitu"); // Envoyer un e-mail SendTextMail (MailInfo); }} catch (UnknownHostException e) {e.printStackTrace (); }} / ** * @Descript: Envoyer un e-mail au format texte * @param: les informations de Mailinfo de l'e-mail à envoyer * @return: Envoyer true après avoir réussi à envoyer; return false après échec * / public static boolean sendtextmail (MailSenSenSinfo Mailinfo) {// Déterminez si l'authentification d'identité est requise MyAuthenticator authenticator = null; Propriétés Pro = MailInfo.getProperties (); essayez {if ("true" .trim (). equals (pro.getProperty ("mail.smtp.auth"))) {// si l'authentification est requise, créez un authentificateur de mot de passe authentificateur = new myAuthenticator (pro.getProperty ("mail.sender.username"), pro.getProperty ("mail.sender.password"); } // Construisez une session pour envoyer un courrier en fonction des propriétés de session de messagerie et de l'authentificateur de mot de passe Session SendMailSession = session.getDefaultInstance (pro, authenticator); // Créer un message mail basé sur le message de session MailMessage = new MimeMessage (sendMailSession); // Créer l'expéditeur de l'adresse du message du courrier à partir de = new InternetAddress (pro.getProperty ("mail.sender.address")); // Définissez l'expéditeur du message Message MailMessage.setFrom (From); // Créez l'adresse du destinataire du message de messagerie et définissez-le sur l'adresse du message du courrier sur = new InternetAddress (MailInfo.getToAddress ()); // Message.recipentType.to L'attribut indique que le type de destinataire est à MailMessage.SetRcipient (message.recipentType.to, to); // Définissez le sujet du message Message MailMessage.SetSubject (MailInfo.getSubject ()); // Définissez l'heure de l'envoi du message de messagerie MailMessage.SeSentDate (new Date ()); // Définissez le contenu principal du message Message MailMessage.seTTeTXt (MailInfo.getContent ()); // Envoyer un courrier transport.send (MailMessage); Retour Vrai; } catch (MessageSingException ex) {ex.printStackTrace (); } return false; } / ** * @Descript: Envoyer le courrier au format html * @param MailInfo: Informations du courrier à envoyer * @param Pièce jointe: Contenu de la pièce jointe * @return: true lorsque vous êtes envoyé avec succès; Faux en cas d'échec * / public static booléen sendhtmlmail (MailSenSenSinfo Mailinfo, String [] Pièce) {// Déterminez si l'authentification d'identité est requise MyAuthenticator Authenticator = NULL; Propriétés Pro = MailInfo.getProperties (); essayez {// si l'authentification d'identité est requise, créez un authentificateur de mot de passe if ("true" .trim (). equals (pro.getProperty ("mail.smtp.auth"))) {// Si l'authentification d'identité est requise, créez un mot de passe authenticatrice = new MyAuthenticator (pro.getProperty ("Mail.Sender.Username"), pro.getProperty ("Mail.Sender.Password")); } // Construisez une session pour envoyer un courrier en fonction des propriétés de la session de messagerie et de l'authentificateur de mot de passe. Session SendMailSession = session.getDefaultInstance (pro, authenticatrice); // Créer un message mail basé sur le message de session MailMessage = new MimeMessage (sendMailSession); // Créez une adresse d'adresse de l'expéditeur de messagerie à partir de = new InternetAddress (pro.getProperty ("mail.sender.address")); // Définissez l'expéditeur du message Message MailMessage.setFrom (From); // Créez l'adresse du destinataire du message de messagerie et définissez-le sur l'adresse du message du courrier sur = new InternetAddress (MailInfo.getToAddress ()); // Message.recipentType.to L'attribut indique que le type de destinataire est à MailMessage.SetRcipient (message.recipentType.to, to); // Définissez le sujet du message Message MailMessage.SetSubject (MailInfo.getSubject ()); // Définissez l'heure de l'envoi de messages de messagerie MailMessage.SeSentDate (new Date ()); // La classe minimultupart est une classe de conteneurs qui contient un objet de type MIMEBODYPART Multipart MainPart = new MIMEMMULPART (); // Créer un MIMEBODYPART contenant HTML Content BodyPart html = new MIMEBODYPART (); // Définit le contenu html html.setContent (mailInfo.getContent (), "Text / html; charset = utf-8"); // Ajouter un contenu html mimeBodyPart MainPart.AddBodyPart (HTML); // Ajouter du contenu de la pièce jointe if (pièce jointe! = Null) {for (String filepath: attachment) {MIMEBODYPART filepart = new MimeBodyPart (); DataSource Source = new FileDataSource (filepath); filepart.setDatahandler (new Datahandler (source)); Essayez {// La méthode circulant en ligne pour résoudre les noms de fichiers brouillé est en fait très pratique pour utiliser mimeutility.encodeword pour résoudre filepart.setFileName (mimeutility.encodeword (source.getName ())); } catch (UnportEnCcodingException e) {e.printStackTrace (); } MainPart.AddBodyPart (filepart); }} // Définissez l'objet minimultupart sur le contenu du courrier MailMessage.setContent (MainPart); // Gardez le contenu MailMessage.SaveChanges (); // Envoyer MailTransport.Send (MailMessage); Retour Vrai; } catch (MessageSingException ex) {ex.printStackTrace (); } return false; } / ** * @Descript: obtenir des informations d'exception sur la méthode de l'expéditeur * Utilisez les chaînes comme flux d'entrée de caractère et de sortie des nœuds physiques, c'est-à-dire l'utilisation de StringReader et Stringwriter * Printwriter (écrivain out, booléen automatiquement) // StringWriter de sortie Informations d'exception StringWriter Sw = new StringWriter (); Printwriter pw = new printwriter (sw, true); E.PrintStackTrace (PW); pw.flush (); Sw.Flush (); return Sw.ToString (); } / ** * @descript: test * @param args * / public static void main (String [] args) {// test 1: Envoyer un e-mail au format texte try {String s = ""; S.Substring (2); } catch (exception e) {e.printStackTrace (); System.out.println (GetEMessage (E)); SendExceptionMail (Nouveau exceptionInfo (Developer.Sanghaiqin.getName (), "get ()", "123", e)); } // Tester 2: Envoyer un e-mail au format HTML MailSenSenSinfo MailInfo = new MailSenSenderInfo (); MailInfo.setToAddress ("[email protected]"); // Définissez l'adresse e-mail du destinataire MailInfo.SetSubject ("Title"); MailInfo.setContent ("Content <H1> www.baidu.com </h1>"); String [] files = {"g: /upload/image/2016/10/28/1477372845440.jpg", "g: /upload/image/2016/10/28/1477372845660.jpg"}; Javamail.sendhtmlmail (MailInfo, fichiers); // Envoyer HTML Format System.out.println ("Envoyer avec succès"); }}Capture d'écran de test:
Test 1: Envoyer des e-mails au format texte:
Test 2: Envoyez des e-mails au format HTML:
Capture d'écran de la structure du projet:
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.