Realice rápidamente la función de enviar correo basado en Spring Boot

El correo electrónico se utiliza a menudo en proyectos, como enviar notificaciones por correo electrónico. Por ejemplo, a través del registro de correo electrónico, autenticación, recuperación de contraseña, notificación de alarma del sistema, información de informes, etc. Este artículo lo lleva a implementar rápidamente una función de envío de correos electrónicos a través de SpringBoot.

Acuerdo de correo

Echemos un vistazo breve a los protocolos de correo comunes. Los protocolos de correo electrónico más utilizados son SMTP, POP3 e IMAP4, todos los cuales pertenecen al conjunto de protocolos TCP / IP. De forma predeterminada, las conexiones se establecen a través de los puertos TCP 25, 110 y 143, respectivamente.

Protocolo SMTP

El nombre completo de SMTP es "Protocolo simple de transferencia de correo", es decir, Protocolo simple de transferencia de correo. Es un conjunto de especificaciones que se utilizan para transferir correo desde la dirección de origen a la dirección de destino, a través del cual se controla el método de transferencia de correo. Una característica importante es que puede retransmitir correo durante la transmisión, es decir, el correo puede retransmitirse a través de hosts en diferentes redes.

La autenticación SMTP simplemente significa que debe proporcionar su nombre de cuenta y contraseña antes de poder iniciar sesión en el servidor SMTP, lo que imposibilita que los spammers se aprovechen de él. El propósito de agregar la autenticación SMTP es evitar que los usuarios sean invadidos por spam. SMTP es el estándar de facto para la transmisión de correo electrónico.

Protocolo POP

El protocolo de oficina postal POP es responsable de recuperar el correo electrónico del servidor de correo. Requiere que el servidor de correo complete una de las siguientes tareas: recuperar correo del servidor de correo y eliminarlo del servidor; recuperar correo del servidor de correo pero no eliminarlo; no recuperar correo, solo preguntar si llega nuevo correo.

El protocolo POP admite extensiones de correo de Internet multiusuario. Este último permite a los usuarios adjuntar archivos binarios a los correos electrónicos, como archivos de procesamiento de texto y archivos de hojas de cálculo. De hecho, se pueden transferir archivos de cualquier formato, incluidas imágenes y archivos de sonido. Cuando el usuario lee el correo, POP ordena que toda la información del correo se descargue inmediatamente en la computadora del usuario y no se guarde en el servidor.

POP3 (Post Office Protocol 3) es la tercera versión del Post Office Protocol y es el primer protocolo estándar fuera de línea para correo electrónico de Internet.

Protocolo IMAP

El Protocolo de acceso a la información de Internet (IMAP) es un nuevo protocolo superior al POP. Al igual que POP, IMAP también puede descargar correo, eliminar correo del servidor o preguntar si hay nuevos correos, pero IMAP supera algunas de las deficiencias de POP. Por ejemplo, puede determinar cómo el cliente solicita al servidor de correo que envíe el correo recibido, solicitando al servidor de correo que descargue solo los correos seleccionados en lugar de todos los correos. El cliente puede leer primero el título del mensaje de correo y el nombre del remitente antes de decidir si descargar el correo.

A través del programa de correo electrónico del cliente del usuario, IMAP permite a los usuarios crear y administrar carpetas de correo o buzones de correo en el servidor, eliminar correo y consultar parte o la totalidad de una carta. No es necesario enviar todas estas tareas desde el servidor. Descargue en la computadora personal del usuario.

Los clientes de correo más utilizados que admiten IMAP son: ThunderMail, Foxmail, Microsoft Outlook, etc.

Función de correo integrada SpringBoot

Si no usa SpringBoot, debe encapsular el cuerpo del mensaje y otra información usted mismo, lo cual es bastante complicado de implementar. Pero basado en Spring Boot para el envío de correo, casi se puede decir que el envío de correo se puede completar fácilmente mediante la introducción de spring-boot-starter-mail.

En esencia, se debe a que Spring introdujo la clase JavaMailSender sobre Mail. Basado en esta clase, Spring Boot la encapsula aún más, logrando así la integración del envío de correo fácil. Además, la clase JavaMailSender proporciona potentes capacidades de envío de correo y admite varios tipos de envío de correo.

Configuración dependiente

Los pasos de integración son muy simples, agregue las siguientes dependencias al proyecto:

<dependency> 
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

Archivo de configuración

Agregue la configuración del buzón en application.properties, se han incorporado los elementos de parámetro correspondientes y puede configurarlo de acuerdo con la situación específica.

# 邮箱服务器地址
spring.mail.host=smtp.qq.com
[email protected]
spring.mail.password=123456
spring.mail.default-encoding=UTF-8

El primer parámetro de host (dirección del servidor de correo) es diferente para los distintos buzones de correo El anterior es el host del buzón de correo QQ. El buzón 163 es smtp.163.com y el buzón 126 es smtp.126.com.

Los elementos de nombre de usuario y contraseña son el nombre de usuario y la contraseña correspondientes al buzón. La contraseña no es la contraseña de inicio de sesión, sino la contraseña de autorización del cliente establecida después de abrir POP3.

Tome el buzón de correo QQ como ejemplo para configurar y obtener la contraseña. Primero inicie sesión en el buzón de QQ, busque "Configuración", "Cuentas".

imagen

Busque "Servicio POP3 / IMAP / SMTP / Exchange / CardDAV / CalDAV" a continuación, seleccione el "Servicio IMAP / SMTP" en el segundo elemento e inícielo.

imagen

Abierto con éxito, se mostrará la siguiente página:

imagen

La página contiene el código de autorización, que es la contraseña en nuestro proyecto. En este momento, copie el código de autorización en la contraseña.

Enviar correo de texto

Después de completar la configuración anterior, la realización de la función de envío es extremadamente simple: puede inyectar directamente JavaMailSender en el proyecto y luego llamar a su método de envío para enviar correos electrónicos.

Envíe correos electrónicos en forma de pruebas unitarias de la siguiente manera:

@RunWith(SpringRunner.class)
@SpringBootTest
public class MailTests {

	@Resource
	private JavaMailSender javaMailSender;

	@Test
	public void sendMail() {
		SimpleMailMessage msg = new SimpleMailMessage();
		msg.setFrom("[email protected]");
		msg.setTo("[email protected]");
		msg.setSubject("程序新视界");
		msg.setText("技术分享");
		javaMailSender.send(msg);
	}
}

El programa es muy simple: cree un objeto SimpleMailMessage, establezca a qué cuenta (desde) enviar (a) y cuál es el asunto y el texto del correo.

Ejecute la prueba unitaria, espere un momento y se recibirá el correo electrónico. Si hay una excepción relacionada con la verificación de permisos durante la ejecución, debe verificar si la configuración relacionada es correcta.

Si necesita copiar a otras personas, agregue una o más direcciones de destinatarios en el siguiente formato.

// 抄送邮箱
msg.setCc("[email protected]","[email protected]");

Enviar correo de texto enriquecido

Normalmente, nuestros correos electrónicos tendrán diferentes formatos. El uso del SimpleMailMessage anterior no puede enriquecer muy bien el contenido del correo electrónico, ni es compatible con el análisis html.

Spring Boot admite el uso de HTML para enviar correos electrónicos a través de MimeMessage. Mira el código de muestra específico:

@Test
public void sendHtmlMail() {
	String content="<html>\n" +
			"<body>\n" +
			"    <h3>hello world ! 这是一封html邮件!</h3>\n" +
			"</body>\n" +
			"</html>";

	MimeMessage message = javaMailSender.createMimeMessage();
	try {
		// 第二个参数true表示需要创建一个multipart message
		MimeMessageHelper helper = new MimeMessageHelper(message, true);
		helper.setFrom("[email protected]");
		helper.setTo("[email protected]");
		helper.setSubject("程序新视界");
		helper.setText(content, true);

		javaMailSender.send(message);
	} catch (MessagingException e){
		System.out.println("发送邮件异常");
	}
}

Aquí, MimeMessageHelper se usa para establecer la información del parámetro correspondiente, pero MessagingException se lanzará cuando se llame al método setter correspondiente a MimeMessageHelper, que requiere un manejo especial.

El contenido del contenido anterior, si se utiliza el objeto SimpleMailMessage para enviar, el contenido del correo contiene el contenido de la etiqueta html en lugar de presentar directamente el formato que la etiqueta html necesita mostrar.

MimeMessageHelper admite el envío de complejas plantillas de correo electrónico, texto, archivos adjuntos, HTML, imágenes, etc. Por ejemplo, si necesita enviar un archivo adjunto, puede llamar al método addAttachment (fileName, file) del ayudante en el código anterior.

No ampliaremos otras funciones aquí, puedes probarlo tú mismo.

Otras extensiones

Lo anterior es solo una demostración del envío de correos electrónicos basados ​​en Spring Boot en forma de prueba unitaria. Por supuesto, el escenario de la aplicación en el entorno de producción es mucho más complicado que el anterior. Por ejemplo, considere cuestiones como plantillas de correo electrónico, interfaces externas, manejo de excepciones y tasas de éxito. Puede expandirse sobre esta base.

Dirección de origen: https://github.com/secbr/springboot-learn/tree/master/springboot-mail

Enlace original: " Realice rápidamente la función de envío de correo basado en Spring Boot "

Video tutorial de Fine SpringBoot 2.x

"Spring Boot 2.x Video Tutorial Family Bucket" , un video tutorial boutique de Spring Boot 2.x, para crear el conjunto más completo de videos tutoriales de Spring Boot 2.x.


Nueva visión del procedimiento

La cuenta pública " Nueva Visión del Programa ", una plataforma que le permite mejorar simultáneamente su poder blando y su tecnología dura, proporcionando cantidades masivas de datos.

Cuenta oficial de WeChat: nueva visión del programa

Supongo que te gusta

Origin blog.csdn.net/wo541075754/article/details/108092178
Recomendado
Clasificación