Este artículo es el duodécimo artículo de la serie VHR, con la dirección del proyecto https://github.com/lenve/vhr
El envío de correo electrónico también es un problema común. Aunque el código es simple, muchos amigos no entienden muy bien el proceso, por lo que todavía planean hablar con usted sobre este tema.
Acuerdo de correo electrónico
A menudo escuchamos varios protocolos de correo electrónico, como SMTP, POP3 e IMAP. Entonces, ¿cuáles son las funciones de estos protocolos y cuáles son las diferencias? Discutamos este tema primero.
SMTP es un protocolo de capa de aplicación basado en TCP/IP. Su estado es algo similar a HTTP. El número de puerto predeterminado del servidor SMTP es 25. Al ver esto, los amigos pueden pensar que dado que el protocolo SMTP se basa en el protocolo de capa de aplicación TCP/IP, ¿puedo enviar un correo electrónico a través de Socket? La respuesta es sí.
En la vida, tenemos que seguir los siguientes pasos:
1. Xiao Wang de Shenzhen entregó el correo electrónico a la oficina de correos en Shenzhen
2. La oficina de correos en Shenzhen entregará correo a la oficina de correos en Shanghai
3. Xiao Zhang de Shanghai vino a la oficina de correos para recoger el correo
Esta es una versión reducida del proceso de envío de correo en la vida. Estos tres pasos pueden corresponder a nuestro proceso de envío de correo electrónico por separado. Supongamos que los correos electrónicos se envían desde [email protected] a [email protected]:
[email protected] primero entrega el correo electrónico al servidor de correo de Tencent
2. El servidor de correo de Tencent entrega nuestro correo al servidor de correo de NetEase
[email protected] Inicie sesión en el servidor de correo electrónico de NetEase para ver los correos electrónicos
La entrega de correo electrónico es aproximadamente este proceso, que implica múltiples protocolos. Echemos un vistazo por separado.
El nombre completo del protocolo SMTP es el protocolo simple de transferencia de correo, que se traduce como un protocolo de transferencia de correo simple. Define las reglas de comunicación entre el software del cliente de correo y el servidor SMTP y el servidor SMTP. En otras palabras, el proceso de entregar correos electrónicos al servidor SMTP de Tencent usa primero el protocolo SMTP, y luego el servidor SMTP de Tencent entrega correos electrónicos al servidor SMTP de NetEase todavía usa el protocolo SMTP, que se usa para recibir correos electrónicos. El nombre completo del protocolo POP3 es el protocolo de correos, que se traduce como el protocolo de correos. Define las reglas de comunicación entre el cliente de correo y el servidor POP3. Entonces, ¿en qué escenario se utilizará este protocolo? Cuando el correo electrónico llega al servidor SMTP de NetEase, el usuario [email protected] debe iniciar sesión en el servidor para ver el correo electrónico. En este momento, se utiliza el acuerdo: el proveedor de servicios de correo electrónico proporcionará a cada usuario un espacio especial de almacenamiento de correo electrónico. Después de que el servidor SMTP recibe el correo electrónico, guarda el correo electrónico al espacio de almacenamiento de correo electrónico del usuario correspondiente. Si el usuario desea leer el correo electrónico, debe completarse a través del servidor de correo electrónico POP3 del proveedor de servicios de correo electrónico. Finalmente, algunos amigos pueden haber oído hablar del Protocolo IMAP, que es una extensión del protocolo POP3, con funciones más fuertes y funciones similares. No lo repetiré aquí.
Preparación para enviar correos electrónicos de QQ
En primer lugar, debemos iniciar sesión en la versión web de correo electrónico QQ y hacer clic en el botón de configuración de arriba:
Luego haga clic en la pestaña Cuentas:
Encuentre la opción para habilitar POP3/SMTP en la pestaña Cuenta, como sigue:
Haga clic para habilitar las funciones relevantes. El proceso de activación requiere verificación del número de teléfono móvil. Simplemente siga los pasos y no elabore. Una vez habilitado con éxito, puede obtener un código de autorización, guardar el número y usarlo por un tiempo.
Luego necesitamos el paquete Javaxmail Jar. Los amigos pueden descargarlo directamente en Maven Central Warehouse. No iré a los siguientes detalles aquí.
enviar
Correo electrónico simple
Si solo enviamos un texto simple, el método de envío será relativamente simple. Todo el proceso se puede dividir en tres pasos de la siguiente manera:
Paso 1: Construya el entorno básico del servidor de correo SMTP
Propiedades Propiedades = new Properties (); Properties.SetProperty ("mail.host", "smtp.qq.com"); Properties.SetProperty ("mail.transport.protocol", "smtp"); propiedades.setProperty ("mail.smtp.auth", "verdadero"); propietarios.setproperty ("mail.smtp.class". "javax.net.ssl.sslsocketfactory"); Properties.setProperty ("mail.smtp.port", "465"); sesión session = session.getDefaultInstance (propiedades); session.setDebug (verdadero);Paso 2: Construya el correo electrónico
MIMEMESSAGE MIMEMESSAGE = new Mimemessage (Session); mimemessage.addrecipients (message.recipientType.to, "[email protected]"); // establece el destinatario mimemessage.addrecipient mimemessage.setFrom ("[email protected]"); // Enviar correo electrónico Mimemessage.setSubject ("Test Correo electrónico Asunto"); // Envíe un correo electrónico al tema Mimemessage.setContent ("Hola, este es un correo electrónico de prueba", "Text/Html; Charset = UTF-8"); //
Paso 3: Enviar correo electrónico
Transport Transport = session.getTransport (); transport.connect ("smtp.qqq.com", "[email protected]", "El código de autorización acaba de solicitar"); transport.sendmessage (mimemessage, mimemessage.getallRecipients ()); // Enviar un correo electrónico, el segundo parámetro es el receptor de transporte.clase ();;Correos electrónicos complejos
Al enviar correos electrónicos complejos, los primeros y terceros pasos son los mismos. Solo el segundo paso es más problemático en la construcción de correos electrónicos. Luego, déjame demostrarte un correo electrónico que envía una imagen y un mensaje de texto + dos archivos adjuntos. Para enviar correos electrónicos complejos, primero debe estar familiarizado con tres conceptos, como sigue:
1.Mimemessage: Esta clase es un mensaje de correo electrónico que puede comprender los tipos y encabezados de MIME.
2.Mimemultipart: esta clase define métodos para agregar, eliminar y obtener diferentes partes del correo electrónico
3.MimeBodyPart: este objeto representa una parte del contenido de un objeto Mimemessage. Se considera que cada mimeBodyPart tiene dos partes: tipo mime y contenido que coincide con este tipo
El proceso completo de generación de correo electrónico es el siguiente (ver arriba para los primeros y terceros pasos):
MIMEMESSAGE MIMEMESSAGE = new Mimemessage (Session); mimemessage.addrecipients (message.recipientType.to, "[email protected]"); // establece el destinatario mimemessage.addrecipient mimemessage.setFrom ("[email protected]"); // Semente de correo electrónico Mimemessage.setSubject ("Test Topic Topic"); // Tema de correo electrónico Mimemultipart Mixed = new Mimemultipart ("Mixto"); Mimemessage.SetContent (mixto); // Estable MimeBodyPart (); // Crear archivos adjuntos 1MimeBodyPart adject2 = new MimeBodyPart (); // Crear contenido 2MimeBodyPart Content = new MimeBodyPart (); // Cree el cuerpo de correo electrónico Mixed. mixed.addbodypart (content); // Agregue el cuerpo al cuerpo del mensaje FileDataSource fds1 = new FileDataSource (nuevo archivo ("c: //users//sang//desktop/1.png")); // Construya la fuente de datos de la adjunción una datahandler dh1 = newhandler (fds1); // procesamiento de datos de datos adjunto1.setDatahandler (dh1); // Establezca la fuente de datos del archivo adjunto 1 adjunto1.setFileName ("1.png"); // Establezca el nombre de archivo del archivo adjunto 1 // La operación del archivo adjunto 2 es similar al archivo adjunto 1, por lo que no comentaremos cada uno aquí. FileDataSource fds2 = new FileDataSource (nuevo archivo ("c: // users // sang // Desktop // blog nota.xlsx")); datahandler dh2 = newAhAndler (fds2); adject2.setDataHandler (dh2); adjunto2.setFileName (mimeutity.encodeTeTetex ("blog note.xlsxsxs; Nombre, si hay chino, puede codificarlo a través del método de encodetexto en la clase de mimeutilidad para evitar Mimemultipart BodyMimemultipart = new Mimemultipart ("Relacionado"); // Establezca el tipo de Mime del cuerpo contenido del cuerpo. MimeBodyPart (); // html parte del cuerpo de cuerpo nuevo Datahandler (nuevo FileDataSource ("c: //users//sang//desktop//2.png")); PicPart.SetDatahandler (Datahandler); picpart.setContentId ("2.png"); // Agregar las partes HTML y la imagen del cuerpo a BodyMimemultipart.AddBodyPart (Bodypart); BodyMimemultipart.AddBodyPart (PicPart); mimemessage.savechanges ();
Ok, es así de simple enviar correos electrónicos de QQ por Mail Java. En cuanto a otras cosas como 163, Sina, etc., el estilo de escritura es similar, no lo explicaré aquí.
Resumir
Lo anterior es el código de implementación de la función de correo electrónico QQ en SpringBoot presentada por el editor. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!