¿Qué es la bota de primavera?
Spring Boot es un marco diseñado para simplificar el proceso inicial de configuración de construcción y desarrollo de las aplicaciones de Spring. Este marco utiliza métodos de configuración específicos, para que los desarrolladores no necesiten definir configuraciones de Boilerplate.
Los beneficios de la bota de primavera
1. Configuración simple;
2. Codificación simple;
3. Implementación simple;
4. Monitoreo simple;
Descripción general
Spring Boot integra un servidor de correo, y el uso de Spring Boot puede lograr fácilmente el envío de correo electrónico; Organizar el reciente envío de correo electrónico y precauciones para el arranque de primavera;
Dependencias de paquetes maven
<Spendency> <MoupRoMID> org.springframework.boot </groupid> <artifactId> spring-boot starter-mail </arfactid> </pendency>
Configuración de arranque de primavera
spring.mail.host = smtp.servie.comspring.mail.username = username // dirección de correo electrónico del remitente Spring.mail.password = contraseña // para el buzón QQ, la contraseña se refiere al código de autorización del remitente Spring.mail.properties.smtp.auth = truespring.Mail.properties.poperties.Mail.Mail.propertp.StArttarttart.Entart Para habilitar la transmisión encriptada, use el elemento de verificación del protocolo Spring.mail.Properties.mail.smtp.starttls.required = fasle #ya sea para habilitar la transmisión cifrada.
Implementación del código de primavera
paquete com.dbgo.webservicedemo.email; import org.springframework.beans.factory.annotation.auTowired; import org.springframework.core.io.filesystemresource; import org.springframework.mail.Javamail.Javamailsender; importar; org.springframework.mail.javamail.mimemessageHelper; import org.springframework.stereotype.component; import javax.mail.messagingException; import javax.mail.internet.mimemesege; import java.io.file; @Component ("correo electrónico) Javamailsender Javamailsender; public void sendSimplemail () {Mimemessage Message = null; prueba {mensaje = javamailsender.createMeMessage (); MimemessageHelper Helper = new MimemessageHelper (mensaje, verdadero); Helper.setFrom ("[email protected]"); Helper.setto ("[email protected]"); helper.setsubject ("Título: Enviar contenido HTML"); StringBuffer sb = new StringBuffer (); sb.append ("<h1> gran título-H1 </h1>") .Append ("<p style = 'color:#f00'> Red Word </p>") .Append ("<p style = 'text-align: right'> right </p>"); helper.settext (sb.toString (), true); FilesystemResource filesystemResource = new FilesystemResource (nuevo archivo ("d: /76678.pdf")) helper.addattachment ("factura electrónica", filesystemresource); javamailsender.send (mensaje); } catch (MessionGingException e) {E.PrintStackTrace (); }}}Enviar correos electrónicos bajo el arranque que no es de primavera:
Dependencias de paquetes maven
<Spendencies> <Spendency> <MoupRid> com.sun.mail </proupid> <artifactid> javax.mail </arfactid> <verserse> 1.5.2 </versión> </pendency> </pendencs>
Ejemplo de código Demo1
paquete com.justin.framework.core.utils.email; import java.io.file; import java.io.fileInputStream; import java.io.filenotfoundexception; import java.io.fileOutputStream; import java.io.io.ioxception; import java.io.inputStream; import java.io.unsupport; java.util.date; import java.util.properties; import javax.activation.datahandler; import javax.activation.dataSource; import javax.activation.filedataSource; import javax.mail.address; import javax.mail.authenticator; import javax.mailmessage; javax.mail.message.recipientType; import javax.mail.message.recipientType; import javax.mail.messagingException; import javax.mail.passwordAuthentication; import javax.mail.session; import javax.mail.transhranshorport; javax.mail.internet.mimeBodyPart; import javax.mail.internet.mimemessage; import javax.mail.internet.mimemultipart; import javax.mail.internet.mimeutility;/*** use smtp protocol para enviar correo electrónico*/clase public sendemailcode {// envíe un correo electrónico a protocole static static static stating staticp "; // SMTP Mail Server Private String Static String host = "mail.tdb.com"; // servidor de correo SMTP Puerto predeterminado PRIVADO PRIVADO FINAL String Port = "25"; // si se debe requerir autenticación privada de cadena estática final is_auth = "true"; // si habilita el modo de depuración (habilite el modo de depuración para imprimir el mensaje de respuesta de una pregunta y respuesta cuando el cliente y el servidor interactúan) la cadena estática final privada IS_Enabled_debug_mod = "true"; // cadena estática privada de remitente de = "[email protected]"; // String estático privado de destinatario a = "[email protected]"; cadena estática privada sendUsername = "[email protected]"; cadena estática privada sendUserPWD = "New*2016"; // Inicializar la información de la sesión que se conecta a las propiedades estáticas privadas del servidor de correo Props = null; static {props = new Properties (); propsssetProperty ("mail.enable", "verdadero"); propsssetProperty ("mail.transport.protocol", protocolo); propsssetProperty ("mail.smtp.host", host); propsssetProperty ("mail.smtp.port", puerto); propsssetProperty ("mail.smtp.auth", is_auth); // dependiendo de la situación, propssssetProperty ("mail.debug", is_enabled_debug_mod); } / *** Enviar correo de texto simple* / public static boolean sendTextEmail (cadena a, int código) lanza excepción {try {// crea sesion de objeto session session1 = session.getDefaultInstance (props); // crear mimemessage instancia objeto mimemessage mensaje = new mimemessage (session1); // establecer el mensaje del remitente.setFrom (nuevo Internetaddress (desde)); // Establecer el mensaje de asunto del correo electrónico. Setsubject ("Código de verificación de registro del motor de combustión interna"); // Establecer el mensaje del destinatario.setRecipient (destinatario titeo.to, nuevo Internetaddress (a)); // establecer el mensaje de tiempo de envío. SetsentDate (nueva fecha ()); // Establezca el contenido de texto sin formato en el mensaje de texto de correo electrónico. // Guardar y generar el contenido final del correo electrónico Message.saveChanges (); // Obtener la instancia de transporte Objeto Transport Transport = session1.getTransport (); // Abra la conexión Transport.connect ("MeijiaJiang2016", ""); // Pase el objeto de mensaje al objeto de transporte y envíe el mensaje transport.sendMessage (mensaje, mensaje.getallRecipients ()); // Cerrar la conexión transport.close (); devolver verdadero; } catch (Exception e) {E.PrintStackTrace (); devolver falso; }} public static void main (string [] args) lanza la excepción {sendhtmlemail ("[email protected]", 8888); } / *** Enviar un correo electrónico HTML simple* / public static boolean sendhtmlemail (string to, int code) lanza la excepción {// crea sesión de la sesión de la sesión session1 = session.getInstance (props, nuevo myauthenticator ()); // crear mimemessage instancia objeto mimemessage mensaje = new mimemessage (session1); // establecer el mensaje de asunto del correo electrónico. Setsubject ("Registro de motor de combustión interna"); // establecer mensaje del remitente.setFrom (nuevo Internetaddress (desde)); // establecer el mensaje de tiempo de envío.setsentDate (nueva fecha ()); // Establecer un destinatario Message.setRecipients (DestinatorType.to, Internetaddress.Parse (a)); // Establecer contenido HTML en el cuerpo de correo electrónico, especificar el tipo de MIME en el tipo de texto/html, y especifique la codificación de caracteres como gbk mensaje.setContent ("<Div style = 'width: 600px; margin: 0 auto'> <h3 style = 'color:#003e64; text-align: centro;'> Code de registro de motor de combustión de combustión </h3 </h3 'Pye <' Pyle = '' Pymy = '' 'Pymy. Usuario: </p> <p style = 'Text-Indent: 2em'> Está registrando una cuenta de motor de combustión interna. Society </p> </div> "," Text/html; charset = utf-8 "); // Establecer la cadena de apodo de remitente personalizado nick = ""; intente {nick = javax.mail.internet.mimeutility.Encodetext ("Sociedad de motores de combustión interna de China"); } catch (UnsupportedEncodingException e) {E.PrintStackTrace (); } Message.setFrom (nuevo InternetAddress (nick+"<"+de+">")); // Guardar y generar el contenido final del correo electrónico Message.saveChanges (); // Enviar correo electrónico intente {transport.send (mensaje); devolver verdadero; } catch (Exception e) {E.PrintStackTrace (); devolver falso; }} / *** Enviar correo html con imágenes integradas* / public static void sendhtmlWithInnerImageEmail () lanza MessagingException {// Crear sesión de instancia de sesión Sesión de sesion = session.getDefaultStance (Props, nuevo myAuthenticator ()); // Crear contenido de correo electrónico Mimemessage Message = new Mimemessage (sesión); // Asunto de correo, y especifique el mensaje de formato de codificación. // remitente Message.setFrom (nuevo Internetaddress (desde)); // destinatario mensaje.setRecipients (destinationType.to, internetaddress.parse (a)); // cc Message.setRecipient (destinatario type.cc, nuevo Internetaddress ("[email protected]")); // Enviar secretamente (no se muestra en la lista de destinatarios del correo electrónico) Message.setRecipient (destinatario.bcc, nuevo Internetaddress ("[email protected]"); // Enviar tiempo Message.SetsentDate (nueva fecha ()); // Crear un objeto Mimemultipart con el subtipo MIME "relacionado" mimemultipart mp = new mimemultipart ("relacionado"); // Cree un objeto MimeBodyPart que represente el cuerpo y agréguelo al objeto Mimemultipart creado anteriormente MimeBodyPart htmlPart = new MimeBodyPart (); mp.addbodypart (htmlpart); // Cree un objeto MimeBodyPart que represente los recursos de imagen y agréguelo al objeto Mimemultipart creado anteriormente MimeBodyPart ImagePart = new MimeBodyPart (); MP.AddBodyPart (ImagePart); // Establezca el objeto Mimemultipart en el contenido de todo el mensaje Message.setContent (MP); // Establezca el cuerpo de datos de correo de imagen integrado ds = new FiledataSource (nuevo archivo ("Resource/Firefoxlogo.png")); Datahandler dh = new Datahandler (DS); ImagePart.SetDatahandler (DH); ImagePart.SetContentId ("Firefoxlogo.png"); // Establezca el número de contenido para usar para otras referencias de cuerpo de correo // Cree un objeto Mimemultipart con el subtipo mime "alternativo" y sirva como contenido de correo electrónico del objeto HTMLPART creado anteriormente Mimemultipart htmlmultipart = new Mimemultipart ("alternativa"); // Cree un objeto MimeBodyPart que represente el cuerpo HTML MimeBodyPart htmlBodyPart = new MimeBodyPart (); // donde cid = androidlogo.gif es la imagen dentro del mensaje de referencia, es decir, imagePart.setContentId ("androidlogo.gif"); método htmlBodyPart.SetContent ("<span style = 'color: rojo;'> Este es un correo electrónico html con imágenes integradas !!! <img src =/" cid: firefoxlogo.png/"/> </span>", "Texto/html; charset = utf-8"); htmlmultipart.addbodypart (htmlbodypart); htmlpart.setContent (htmlmultipart); // Guardar y generar el contenido final del correo electrónico Message.saveChanges (); // Enviar correo transport.send (mensaje); } / *** Envíe un mensaje HTML completo con imágenes incrustadas, archivos adjuntos, múltiples destinatarios (mostrando el nombre del buzón), prioridad de correo electrónico y lectura de recibo* / public static void sendMultipleEmail () lanza excepción {string charset = "utf-8"; // Especifique el formato de codificación china // Crear sesión Session Session Session = session.getInstance (props, new Myauthenticator ()); // crear mimemessage instancia objeto mimemessage mensaje = new mimemessage (sesión); // Establecer el tema Message.SetSubject ("Use Javamail para enviar una prueba de correo de combinación mixta"); // establecer el mensaje del remitente.setFrom (nuevo Internetaddress (de "Sina Test Correo electrónico", Charset)); // Establecer el destinatario Message.setRecipients (destinatario de la dirección, nueva dirección [] {// Parámetro 1: dirección de correo electrónico, parámetro 2: nombre (solo se muestra el nombre en el cliente que recibe, no la dirección de correo electrónico), parámetro 3: nombre de cadena china que codifica el nuevo Internetaddress ("[email protected]", "Zhang San_sohu", Charset), New New NEWSET Internetaddress ("[email protected]", "li si_163", charset),}); // Establecer cc Message.setRecipient (destinationType.cc, nuevo Internetaddress ("[email protected]", "wang wu_gmail", charset)); // Establecer mensajes secretos.setRecipient (destinationType.bcc, new Internetaddress ("[email protected]", "zhao liu_qq", charset)); // establecer el mensaje de tiempo de envío.setsentDate (nueva fecha ()); // Establezca el respuestas (el destinatario predeterminado se da cuando el destinatario responde a este correo electrónico) Message.setRepreplyto (Internetaddress.parse ("/" " + mimeutility.encodetext (" Tian Qi ") +"/"<[email protected]>")); // Establecer prioridad (1: emergencia 3: normal 5: bajo) mensaje.setheader ("X-priority", "1"); // Solicite un recibo de lectura (el destinatario le pedirá al remitente que responda al leer el correo electrónico, lo que indica que el correo electrónico ha sido recibido y ha sido leído) Message.Setheader ("Notificación de disposición-To", desde); // Crear un objeto Mimemultipart con subtipo mime "mixto", lo que indica que este es un correo electrónico de combinación mixta mimemultipart mailContent = new mimemultipart ("mixed"); Message.setContent (MailContent); // adjunto mimeBodyPart adjunto1 = new MimeBodyPart (); MimeBodyPart Attach2 = new MimeBodyPart (); // contenido mimeBodyPart MailBody = new MimeBodyPart (); // Agregar archivos adjuntos y contenido al MailContent.AddBodyPart (adjuntar 1); MailContent.AddBodyPart (adjunte2); MailContent.AddBodyPart (MailBody); // Adjunto 1 (use el marco JAF para generar el cuerpo del correo) DataSource ds1 = new FileDataSource ("Resource/Earth.bmp"); Datahandler dh1 = new Datahandler (DS1); adjunto1.setFileName (mimeUtility.EncodeText ("Earth.bmp")); adjunto1.setDatahandler (DH1); // Adjunto 2 DataSource ds2 = new FileDataSource ("Recurso/Cómo aprender bien C.txt"); Datahandler dh2 = new Datahandler (DS2); adjuntar 2.SetDatahandler (DH2); adjunto2.setFileName (mimeUtility.EncodeText ("Cómo aprender bien el lenguaje C.txt")); // Cuerpo de correo electrónico (imagen integrada + texto HTML) Mimemultipart Body = new Mimemultipart ("relacionado"); // El cuerpo de correo electrónico también es una combinación, y la relación combinada debe especificarse MailBody.setContent (cuerpo); // El cuerpo de correo electrónico consiste en html y imágenes mimeBodyPart imgpart = new MimeBodyPart (); MimeBodyPart htmlPart = new MimeBodyPart (); Body.AddBodyPart (imgpart); Body.AddBodyPart (htmlpart); // Text Image DataSource ds3 = new FileDataSource ("Resource/Firefoxlogo.png"); Datahandler dh3 = new Datahandler (DS3); imgpart.setDatahandler (DH3); imgpart.setContentId ("Firefoxlogo.png"); // html Correo electrónico Contenido Mimemultipart htmlMultipart = new MimemUlTIPart ("alternativo"); htmlpart.setContent (htmlmultipart); MimeBodyPart htmlContent = new MimeBodyPart (); htmlContent.setContent ("<span style = 'color: rojo'> Este es el correo electrónico que envié con java por correo electrónico!" + "<img src = 'cid: firefoxlogo.png'/> </span>", "Text/html; charset = gbk"); htmlMultipart.AddBodyPart (htmlContent); // Guardar el contenido del mensaje y modificar Message.saveChanges (); /*Archivo emml = buildEmlFile (mensaje); sendMailForEml (EML);*/ // Enviar correo transport.send (mensaje); }/*** Generar un archivo EML en el contenido de correo electrónico* @param Mensaje Correo electrónico Contenido*/Public Static File BuildEMLFile (Mensaje Mensaje) lanza MessageGexception, FileNotFoundException, IOException {Archivo = nuevo archivo ("c: //" + mimeutility.decodeText (sesage.getsubject () + "); Message.WriteTo (nuevo FileOutputStream (archivo)); Revolver archivo; } / *** Enviar archivo de correo electrónico generado localmente* / public static void sendmailforeml (archivo emml) lanza excepción {// session session session = session.getInstance (props, new MyAuthenticator ()); // Obtener contenido de correo electrónico, es decir, el archivo EML generado antes de que ocurra InputStream es = nuevo FileInputStream (EML); MIMEMESSAGE MENSAJE = new Mimemessage (sesión, IS); // Enviar correo electrónico transport.send (mensaje); } / *** Enviar información de autenticación al servidor de correo* / MyAuthenticator de clase estática extiende Authenticator {private String UserName = ""; String private Password = ""; public myauthenticator () {super (); this.password = sendUserPWD; this.Username = sendUsername; } public myauthenticator (String UserName, String Password) {super (); this.Username = UserName; this.password = contraseña; } @Override PassionAuthentation GetPasswordAuthentication () {return New PasswordAuthentication (nombre de usuario, contraseña); }}}Ejemplo de código Demo2:
paquete com.justin.framework.core.utils.email; import java.util.hashset; import java.util.properties; import java.util.set; import javax.activation.datahandler; import javax.activation.filedataSource; import javax.Mail.Mail javax.mail.message; 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.mimemesge; import; importar; import javax.mail.internet.mimemultipart; import javax.mail.internet.mimeutility; public class MailManagerUtils {// Enviar correo electrónico Public Static Boolean sendmail (correo electrónico de correo electrónico) {String asunto = correo electrónico.getSubject (); String content = correo electrónico.getContent (); String [] recluits = email.getRecievers (); String [] copyright = COLECT.GETCOPYTO (); String attbody = email.getattBody (); String [] attBodys = email.getattBodys (); if (recievers == null || collectters.length <= 0) {return false; } try {Properties props = new Properties (); propsssetProperty ("mail.enable", "verdadero"); propsssetProperty ("mail.protocal", "smtp"); propsssetProperty ("mail.smtp.auth", "true"); propsssetProperty ("mail.user", "[email protected]"); propsssetProperty ("mail.pass", "new ***"); propsssetProperty ("mail.smtp.host", "mail.tdb.com"); propsssetProperty ("mail.smtp.from", "[email protected]"); propsssetProperty ("mail.smtp.fromName", "tdbvc"); // Cree un programa para comunicarse con el servidor de correo Session MailConnection = session.getInstance (Props, NULL); Mensaje msg = new Mimemessage (MailConnection); // Establecer el remitente y la dirección del destinatario remitente = nuevo Internetaddress (props.getProperty ("mail.smtp.from")); // múltiples destinatarios msg.setFrom (remitente); Establecer <Sc InternetAddress> touserset = new Hashset <Scet Internetaddress> (); // Validación de validez del buzón para (int i = 0; i <receptores.length; i ++) {if (recievers [i] .trim (). Matches ("^// w+([-+.] // w+)*@// w+([-.] // w+)+$") {touserset.add (new Internetdddress (recieVers [I].));); }} msg.setRecipients (Message.RecipientType.to, touserset.toarray (nuevo Internetaddress [0])); // Establecer cc if (copyto! = Null) {set <netnetaddress> copyTousReSet = new Hashset <Scet Internetaddress> (); // Validez de correo electrónico válida para (int i = 0; i <copyto.length; i ++) {if (copyto [i] .trim (). Matches ("^// w+([-+.] // w+)*@// w+([-.] // w+" $ ") {copyToUseSet.add (new InternetDdress (Copyto [i].]));););); }} // msg.setRecipients (Message.recipientType.cc, (dirección []) Internetaddress.Parse (copyto)); msg.setRecipients (Message.RecipientType.cc, CopyTouserSet.ToArray (nuevo Internetaddress [0])); } // Establezca el correo electrónico Msg.SetSubject (mimeUtility.EncodeText (asunto, "UTF-8", "b")); // Problema de código confuso chino // Establecer el contenido de correo electrónico Bodypart MessageBodyPart = new MimeBodyPart (); MessageBodyPart.SetContent (contenido, "Text/Html; Charset = UTF-8"); // multipart chino multipart = new mimemultipart (); multipart.addBodyPart (MessageBodyPart); msg.setContent (multipart); / ****************************************/ if (attbody! = null) {string [] filepath = attbody.split (";"); for (String FilePath: FilePath) {// Establezca el archivo adjunto de la letra (use el archivo en la máquina local como adjunto) Bodypart Mdp = new MimeBodyPart (); FileDataSource fds = new FileDataSource (FilePath); Datahandler dh = new Datahandler (fds); mdp.setFileName (mimeUtility.EncodeText (fds.getName ())); MDP.SetDatahandler (DH); multipart.addBodyPart (MDP); } // Ponga MTP como el contenido del objeto de mensaje msg.setContent (multipart); }; if (attbodys! = null) {for (string filepath: attBodys) {// Establezca el archivo adjunto de la letra (use el archivo en la máquina local como el accesorio) Bodypart mdp = new MimeBodyPart (); FileDataSource fds = new FileDataSource (FilePath); Datahandler dh = new Datahandler (fds); mdp.setFileName (mimeUtility.EncodeText (fds.getName ())); MDP.SetDatahandler (DH); multipart.addBodyPart (MDP); } // Ponga MTP como el contenido del objeto de mensaje msg.setContent (multipart); }; /*************************************************** ///// Almacenar el correo electrónico primero msg.savechanges (); System.out.println ("Enviar correo electrónico ..."); Transferencia de transporte = mailconnection.getTransport (props.getProperty ("mail.protocal")); // Nombre del servidor de correo, nombre de usuario, contraseña trans.connect (props.getProperty ("mail.smtp.host"), props.getProperty ("mail.user"), props.getproperty ("mail.pass")); trans.sendMessage (msg, msg.getallRecipients ()); System.out.println ("¡Enviar correo correctamente!"); // cierre el canal if (trans.isconnected ()) {trans.close (); } return verdadero; } Catch (Exception e) {System.err.println ("¡Envíe el correo electrónico, envíe un fallido!" + E); devolver falso; } Finalmente {}} // El remitente, el destinatario y el titular de la respuesta tiene un código chino confuso en el correo electrónico, Res es la dirección obtenida // El método de codificación predeterminado de HTTP es ISO8859_1 // para enviar direcciones que contienen chino, use el método de mimeutilidad. Dodetex // para otros, convertir la dirección de ISO8859 a GBK. getChineseFrom (String Res) {String from = res; Pruebe {if (from.startswith ("=? } else {from = new String (from.getBytes ("iso8859_1"), "gbk"); }} catch (Exception e) {E.PrintStackTrace (); } regreso de; } // Convertir a GBK que codifica public Static String TOCHINESE (String StrValue) {try {if (strValue == null) return null; else {strValue = new String (strValue.getBytes ("ISO8859_1"), "gbk"); devolver strvalue; }} capt (excepción e) {return null; }} public static void main (string [] args) {correo electrónico correo electrónico = nuevo correo electrónico (); email.setRecievers (new String [] {"[email protected]"}); email.setsubject ("Prueba de prueba"); email.setContent ("prueba de prueba"); sendmail (correo electrónico); }}Resumir
Lo anterior es todo el contenido de este artículo. Espero que el contenido de este artículo tenga cierto valor de referencia para el estudio o el trabajo de todos. Si tiene alguna pregunta, puede dejar un mensaje para comunicarse. Gracias por su apoyo a Wulin.com.