En uso real, por ejemplo, si compra en Taobao y solicita un reembolso, verá un correo electrónico de reembolso en su dirección de correo electrónico, o registra una cuenta, solicite la verificación de la notificación por correo electrónico, etc. Todos estos son envíos por correo electrónico. Aquí presentará el caso de la transmisión anormal de correo electrónico por parte del sistema.
Preparación:
eclipse4.5 64 bits
JDK1.7 64 bits
El frasco requerido para enviar correo:
FastJson-1.1.24.Jar, Javax.mail-1.5.6.Jar
Desarrollador de clases:
Tipo de enumeración, nombre del remitente y dirección de correo electrónico
correo de paquete; /** * @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] "), wanghao (" Chen yuhao "," [email protected] "), wanghao (" Chen yuhao "," [email protected] "), Wanghao (" Chen Yuhao "," [email protected] "), Wanghao (" ") (" "),") Dong "," [email protected] "), sanghaiqin (" sang haiqin "," [email protected] "); // Nombre del remitente Nombre de cadena privada; // Correo electrónico del remitente Cadena privada de cadena; desarrollador privado () {} Developer privado (nombre de cadena, String Mail) {this.name = name; this.mail = mail; } / *** @Descript: Pase el nombre del remitente para obtener el correo electrónico del remitente* @param Name el nombre del remitente* @return* / public static string getMail (name de cadena) {for (desarrollador c: desarrollador.values ()) {if (c.getName (). Equals (nombre)) {return C.Mail; }} return null; } public String getName () {nombre de retorno; } public void setName (nombre de cadena) {this.name = name; } public String getMail () {return mail; } public void setmail (correo de cadena) {this.mail = mail; }} Class ExceptionInfo: Información del remitente
correo de paquete; /** *@class: ExceptionInfo *@Descript: Información del remitente *@Fecha: 26 de octubre de 2016 a las 8:11:27 PM *@autor sanghaiqin *@versión: v1.0 */public class ExceptionInfo {// Nombre del remitente Desarrollador de cadenas privadas; // Método del remitente Método de cadena privada; // URL de remitente URL de cadena privada; // El remitente captura información de excepción Excepción privada e; / *** @param Nombre del remitente de desarrollador* @param Método Método del remitente* @param url remitente url* @param e remitente captura información de excepción*/ public excepcióninfo (desarrollador de cadenas, método de cadena, url, excepción e) {super (); this.developer = desarrollador; this.method = método; this.url = url; this.e = e; } public String getDeveloper () {return desarrollador; } public void setDeveloper (String Developer) {this.developer = desarrollador; } public String getMethod () {Método de retorno; } public void setMethod (método de cadena) {this.method = método; } public String getUrl () {return url; } public void seturl (url de cadena) {this.url = url; } Public Exception gete () {return e; } public void sete (excepción e) {this.e = e; }} MailSenderInfo: enviar información por correo electrónico
correo de paquete; import java.util.properties; /** *@class: mailsenderInfo *@Descript: Enviar información por correo electrónico *@Fecha: 26 de octubre de 2016 a las 8:14:22 pm *@autor sanghaiqin *@versión: v1.0 */public class MailsenderInfo {// La IP privada String MailServerHost del servidor envía el correo; // El puerto del servidor que envía el correo es 25 string privado MailserverPort = "25"; // La dirección del remitente de la cadena privada de correo fromaddress; // La dirección del receptor de correo de la cadena privada de cadena; // Inicie sesión en el nombre del nombre del Servidor del Servidor de usuario Private String String Nombre de usuario; // Inicie sesión en la contraseña de cadena privada del servidor de envío del servidor del servidor; // ¿Necesita autenticación privada boolean validate = false; // Correo electrónico Asunto de la cadena privada Asunto; // Contenido de texto del contenido de cadena privada de correo; // Nombre de archivo de la cadena privada del archivo adjunto de correo [] adjunteFileNames; public mailsenderInfo () {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 validate) {this.validate = validate; } public String [] getAttachFileNames () {return adjectFileNames; } 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 Password; } public void setPassword (String Password) {this.password = contraseña; } 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 Sujem; } public void setSubject (string stem) {this.subject = saters; } public String getContent () {return content; } public void setContent (string textContent) {this.content = textContent; } / *** @Descript: Obtener propiedad de la sesión de correo electrónico* @return* / Public Properties getProperties () {PropertyUtileUtUtil = new PropertyUtil (); Propiedades Propiedades = PropertyUtil.ReadProperties (); propiedades de retorno; }} Clase Myauthenticator: autenticador de usuario
correo de paquete; import javax.mail.authenticator; import javax.mail.passwordAuthentication; /** *@class: myauthenticator *@descript: verificación de usuario *@fecha: 26 de octubre de 2016 a las 8:57:45 pm *@autor sanghaiqin *@versión: v1.0 */public class myauthenticator extiende Authenticator {// username string username = null; // Password String Password = Null; public myauthenticator () {} public myauthenticator (string username, string contraseña) {this.username = username; this.password = contraseña; } PRINCIDA PROTEGADA AUTHENTACIÓN GetPassWalDauthentication () {return New PasswordAuthentication (nombre de usuario, contraseña); }} Class PropertyUtil: obtener la clase de herramienta de archivo de propiedades de propiedades
correo de paquete; import java.io.fileInputStream; import java.io.filenotfoundException; import java.io.ioException; import java.io.inputstream; import java.util.properties; / ** *@class: PropertyUtil * @Descript: Obtener la clase de herramienta de archivo de propiedades * @fecha: 26 de octubre de 2016 a las 8:20:10 pm * @autor sanghaiqin * @versión: v1.0 */ public class PropertyUtil {/ ** *@Descript: Carga de recursos de recursos de recursos de recursos de recursos) InputStream InputStream = null; Propiedades Propiedades = New Properties (); // use InputStream para obtener un archivo de recursos, intente {inputStream = new FileInputStream (recursos); // cargar las propiedades del archivo de configuración.load (inputStream); } catch (FileNotFoundException e) {E.PrintStackTrace (); } catch (ioException e) {E.PrintStackTrace (); } Finalmente {if (inputStream! = null) {try {inputStream.close (); } catch (ioException e) {E.PrintStackTrace (); }} Propiedades de retorno; } / ** * @Descript: Lea el archivo de propiedades * @return * @throws filenotFoundException * / public proppersies readProperties () {String recursos = PropertyUtil.class.getClassLoader (). getResource ("prop.properties"). getPath (); Propiedades Propiedades = LoadProperties (recursos); propiedades de retorno; } / *** @descript: test* @param args* / public static void main (string [] args) {PropertyUtil P = new PropertyUtil (); Propiedades pro = P.ReadProperties (); String mailsenderUsername = (string) pro.get ("mail.sender.username"); System.out.println ("Nombre de usuario del remitente de correo:"+MailSenderUsername); // [email protected] String Path = PropertyUtil.class.getClassLoader (). GetResource ("prop.properties"). Getpath (); System.out.println (ruta); // /g:/workspaces4.4/test/bin/prop.properties}} Archivo de recursos pro.properties:
#----------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- #Dirección de correo electrónico del remitente [email protected]
Clase Javamail: Enviar buzón
correo de paquete; import java.io.printwriter; import java.io.stringwriter; import java.io.unsupportedencodingException; import java.net.inetaddress; import java.net.unknownHosTexception; import java.util.date; import java.util.properties; import javax.activation.datahandler; import javax.activation.dataSource; import javax.activation.fileDataSource; import javax.mail.address; importar javax. javax.mail.bodypart; import javax.mail.message; import javax.mail.messagingException; import javax.mail.multipart; import javax.mail.session; import javax.mail.transport; import javax.mail.internet.internetaddress; import javax.mail.internet.mimeBodyPart; import javax.mail.internet.mimemessage; import javax.mail.internet.mimemultipart; import javax.mail.internet.mimeutility; / ** *@class: javamail *@descript: paquete jar requerido para enviar el buzón de información *: *fastjson-1.1.24.jar *javax.mail-1.5.6.jar *@fecha: 26 de octubre de 2016 a las 8:13:05 pm *@autor sanghaiqin *@versión: v1.0 */ public class javamail {public static void sendexceptionmail (excepción {excepción {excepción {excepción {excepción {excepción {excepción {excepción {excepción {excepción {excepción {excepción {excepción {excepción {excepción {excepción orifera // Obtener el correo electrónico del remitente a través del remitente String mail = desarrollador.getmail (info.getdeveloper ()); if (mail! = null) {mailsenderInfo mailInfo = new MailSenderInfo (); // Establezca el contenido de texto del correo electrónico mailinfo.setContent ("responsable:"+info.getDeveloper ()+"==> IP del servidor:"+inetaddress.getLocalhost (). Gethostaddress ()+"==> nombre del método:"+info.getMethod ()+"==> Dirección:" Info.getUnGeRL ()+"==> información de excepción "+getEmessage (info.gete ())); // establecer la dirección del destinatario de correo electrónico mailinfo.settoaddress (correo); // Envíe un correo electrónico a MailInfo.setsubject ("notificación de excepción yika aitu"); // Enviar correo electrónico sendTextmail (mailInfo); }} Catch (desconocidoHostException e) {E.PrintStackTrace (); }} /*** @Descript: Envíe el correo electrónico en formato de texto* @param: mailinfo información del correo electrónico que se enviará* @return: envíe verdadero después del envío exitoso; Devuelve falso después de la falla */ public static boolean sendTextmail (MailSenderInfo MailInfo) {// Determinar si la autenticación de identidad se requiere myauthenticator autenticator = null; Propiedades pro = mailInfo.getProperties (); Pruebe {if ("true" .trim (). Equals (pro.getProperty ("mail.smtp.auth"))) {// Si se requiere autenticación, cree un autenticador de contraseña autenticador = nuevo myauthenticator (pro.getProperty ("mail.sender.username -same. } // Construye una sesión para enviar correo basado en las propiedades de la sesión de correo y la sesión del autenticador de contraseña sendmailsession = session.getDefaultInstance (pro, autenticador); // Crear un mensaje de correo basado en el mensaje de sesión MailMessage = new Mimemessage (sendmailsession); // Cree el remitente de la dirección del mensaje de correo desde = new InternetAddress (pro.getProperty ("mail.sender.address")); // establecer el remitente del mensaje MailMessage.setFrom (desde); // Crear la dirección del destinatario del mensaje de correo y establecerla en la dirección del mensaje de correo a = new InternetAddress (mailInfo.gettoaddress ()); // Message.RecipientType.to El atributo indica que el tipo de destinatario es a MailMessage.setRecipient (Message.RecipientType.to, To); // Establecer el tema del mensaje MailMessage.SetSubject (mailInfo.getSubject ()); // Establecer el tiempo para enviar el mensaje de correo MailMessage.SetSentDate (nueva fecha ()); // Establecer el contenido principal del mensaje MailMessage.settext (mailinfo.getContent ()); // Enviar correo transport.send (MailMessage); devolver verdadero; } catch (MessionGingException ex) {Ex.PrintStackTrace (); } return false; } /** * @Descript: envíe el correo en formato html * @param mailinfo: información del correo que se enviará * @param adjunto: contenido adjunto * @return: true cuando se envía correctamente; falso cuando falló */ public static boolean sendhtmlmail (MailsenderInfo mailinfo, string [] adjunto) {// determinar si la autenticación de identidad se requiere myauthenticator autenticator = null; Propiedades pro = mailInfo.getProperties (); Pruebe {// Si se requiere autenticación de identidad, cree un autenticador de contraseña if ("true" .trim (). Equals (pro.getProperty ("mail.smtp.auth")) {// Si se requiere autenticación de identidad, cree un autenticador de contraseña = nuevo Myauthenticator (pro.getProperty ("mail.sender.username"), pro.getProperty ("mail.sender.password")); } // Construye una sesión para enviar correo en función de las propiedades de la sesión de correo y el autenticador de contraseña. Session sendmailsession = session.getDefaultInstance (pro, autenticador); // Crear un mensaje de correo basado en el mensaje de sesión MailMessage = new Mimemessage (sendmailsession); // Cree una dirección de la dirección del remitente de correo desde = new InternetAddress (pro.getProperty ("mail.sender.address")); // establecer el remitente del mensaje MailMessage.setFrom (desde); // Crear la dirección del destinatario del mensaje de correo y establecerla en la dirección del mensaje de correo a = new InternetAddress (mailInfo.gettoaddress ()); // Message.RecipientType.to El atributo indica que el tipo de destinatario es a MailMessage.setRecipient (Message.RecipientType.to, To); // Establecer el tema del mensaje MailMessage.SetSubject (mailInfo.getSubject ()); // Establecer el tiempo para enviar mensajes de correo MailMessage.SetsentDate (nueva fecha ()); // La clase Minimultipart es una clase de contenedor que contiene un objeto de MimeBodyPart Type Multipart MainPart = new Mimemultipart (); // Cree un MimeBodyPart que contenga contenido HTML BodyPart html = new MimeBodyPart (); // Establecer contenido html html.setContent (mailinfo.getContent (), "text/html; charset = utf-8"); // Agregar contenido html mimeBodyPart MainPart.AddBodyPart (HTML); // Agregar contenido de archivos adjuntos if (adjunto! = Null) {for (string filepath: adjunto) {mimeBodyPart filePart = new MimeBodyPart (); DataSource fuente = new FileDataSource (FilePath); filePart.SetDatahandler (nuevo Datahandler (fuente)); Pruebe {// El método que circula en línea para resolver los nombres de archivos confusos es realmente muy conveniente para usar mimeutilidad.encodeword para resolver filePart.setFileName (mimeutility.Encodeword (fuente.getName ())); } catch (UnsupportedEncodingException e) {E.PrintStackTrace (); } mainPart.AddBodyPart (FilePart); }} // Establezca el objeto Minimultipart en el contenido de correo MailMessage.SetContent (MainPart); // Mantenga el contenido MailMessage.SaveChanges (); // enviar MailTransport.send (MailMessage); devolver verdadero; } catch (MessionGingException ex) {Ex.PrintStackTrace (); } return false; } / *** @Descript: Obtenga información de excepción sobre el método del remitente* Use cadenas como las transmisiones de entrada y salida de caracteres de los nodos físicos, es decir, el uso de StringReader y StringWriter* PrintWriter (Writer Out, Boolean Autoflush) Cree una nueva impresión de impresión de fila Automática, verdadero significa que puede refrescar automáticamente* @param E Exception Information* @return* / Private Static String obtenga (excepción de la excepción (excepción de la excepción (excepción (excepción). // StringWriter Exception Information Información 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: Enviar correo electrónico en formato de texto intente {String s = ""; S.Substring (2); } catch (Exception e) {E.PrintStackTrace (); System.out.println (getEmessage (e)); sendExceptionMail (nuevo ExceptionInfo (desarrollador.sanghaiqin.getName (), "get ()", "123", e)); } // Prueba 2: Envíe el correo electrónico en formato HTML MailSenderInfo MailInfo = new MailSenderInfo (); mailinfo.settoaddress ("[email protected]"); // establecer la dirección de correo electrónico del destinatario Mailinfo.setsubject ("Título"); mailinfo.setContent ("Content <h1> www.baidu.com </h1>"); String [] archivos = {"g: /upload/image/2016/10/28/1477372845440.jpg", "g: /upload/image/2016/10/28/147777372845660.jpg"}; Javamail.sendhtmlmail (mailInfo, archivos); // Enviar formato HTML System.out.println ("Enviar correctamente"); }}Captura de pantalla de prueba:
Prueba 1: Enviar correos electrónicos en formato de texto:
Prueba 2: Envíe correos electrónicos en formato HTML:
Captura de pantalla de la estructura del proyecto:
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.