SpringBoot se da cuenta de enviar correo

Plataforma de autor:

| CSDN: blog.csdn.net/qq\_4115394…

| Pepitas: juejin.cn/user/651387…

| Zhihu: www.zhihu.com/people/1024…

| GitHub: github.com/JiangXia-10…

| Cuenta pública de WeChat: 1024 notas

Este artículo tiene unas 3865 palabras y el tiempo estimado de lectura es de 10 minutos.

prefacio

El envío de correos electrónicos es uno de los escenarios de negocio necesarios para muchas empresas. Los más comunes incluyen correos electrónicos de advertencia temprana, correos electrónicos de incorporación, correos electrónicos de informes, etc. Hay muchos escenarios en nuestra empresa que necesitan usar la función de correo electrónico.Hoy, aprendamos cómo usar springboot para realizar el escenario comercial de correo electrónico y dominar la lógica central de la clase comercial de correo electrónico.

El proceso básico para enviar un correo electrónico es el siguiente:

  • El remitente del correo electrónico inicia sesión en su servidor de correo electrónico mediante el nombre de usuario y la contraseña, aquí inicia sesión directamente llamando a la interfaz;

  • El remitente prepara el correo para enviarlo y lo envía desde el servidor de correo del remitente al servidor de correo del destinatario.

  • Después de que el destinatario inicia sesión en su buzón, extrae el correo electrónico del servidor de correo electrónico para verlo, por lo que el nombre de usuario, la contraseña y la dirección del servidor de correo electrónico del remitente del correo electrónico deben configurarse más tarde.

combate

Al igual que otros escenarios, los correos electrónicos también deben presentar un iniciador primero, y las dependencias de inicio relevantes aquí son las siguientes:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
复制代码

Después de introducir las dependencias anteriores, puede usar el correo electrónico. Sin embargo, como se mencionó anteriormente, debe configurar el nombre de usuario, la contraseña y la dirección del servidor de correo electrónico del remitente del correo electrónico. Aquí, los atributos de configuración del correo electrónico del servidor de correo electrónico son los siguientes:

spring:
    mail:    
#    邮箱账号  
        username: [email protected]    
#    邮箱客户端授权码  
        password: sqbnsqstthyshghi    
#    邮箱服务器地址  
        host: smtp.qq.com  
        properties:    
            mail:      
                smtp:        
                    ssl:          
                        enable: true
复制代码

La contraseña aquí no es la contraseña utilizada para iniciar sesión en la página web, sino el código de autorización obtenido cuando se activa el servicio en la cuenta de configuración del buzón, que debe obtenerse a través de los siguientes métodos: Por ejemplo, si tiene un QQ buzón, vaya a Configuración-Cuenta-Servicio POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV, habilite el servicio POP3/SMTP y luego envíe el número de teléfono móvil para verificación para obtener el código de autorización:

imagen.png

imagen.png

El valor de la dirección del host también se ve al hacer clic en él después de habilitar el servicio de buzón en la configuración: el mismo buzón suele ser el mismo, lo que indica la dirección del servidor del buzón, pero cuando se usa el buzón QQ para enviar correo, si solo el número de cuenta, contraseña, host, le indicará que se requiere una conexión segura, por lo que también se requiere la siguiente configuración:

spring   
    properties:    
        mail:      
            smtp:        
                ssl:          
                    enable: true
复制代码

A continuación, puede probar formalmente el correo electrónico. El método en la clase de prueba es el siguiente:

@Autowired    
JavaMailSenderImpl javaMailSender;    
@Test    
public void sendmailtest(){        
SimpleMailMessage mailMessage = new SimpleMailMessage();        
mailMessage.setSubject("测试springboot发送邮件");//主题        
mailMessage.setText("这是springboot发送邮件的内容,你看看怎么样呢?是不是成功了?");//内容        mailMessage.setTo("[email protected]");        
mailMessage.setFrom("[email protected]");        
javaMailSender.send(mailMessage);    
}
复制代码

Ejecute el método de prueba, después de ejecutarse con éxito, abra el buzón de recolección de correo del destinatario, aquí está el buzón 163, puede ver que el correo que acaba de enviar se recibió con éxito:

imagen.png

imagen.pngA través del código anterior, podemos ver que el núcleo es JavaMailSenderImpl. Verifique el código fuente y descubra que implementa la interfaz JavaMailSender. ¿Qué son JavaMailSender y JavaMailSenderImpl? JavaMailSender y JavaMailSenderImpl son la interfaz y la clase de implementación del servicio de correo integrado proporcionado oficialmente por Spring, y actualmente son las principales herramientas para enviar correo e integrar servicios de correo en el backend de Java. Su principio es realmente muy simple: si se usa el código de prueba anterior, solo necesita inyectar JavaMailSenderImpl directamente en la clase empresarial y llamar al método de envío para enviar el correo. Entre ellos, los correos electrónicos simples se pueden enviar a través de SimpleMailMessage y los correos electrónicos complejos se pueden enviar a través de MimeMessageHelper para crear MimeMessage. Por ejemplo, puede configurar una plantilla relacionada con el correo electrónico. Cada vez que envíe diferentes correos electrónicos a diferentes personas, puede llamar directamente a la plantilla, y también puede cargar archivos adjuntos y enviarlos. Por ejemplo, en el escenario de un correo electrónico de incorporación: El archivo html de la plantilla de correo electrónico es el siguiente:

<html lang="en" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8">
        <title>
            这是欢迎一个邮件
        </title>
    </head>
    <body>
        欢迎 加入我们公司
        <table border="1">
            <tr>
                <td>
                    姓名
                </td>
                <td th:text="${name}"></td>
            </tr>
            <tr>
                <td>
                    职位
                </td>
                <td th:text="${posName}"></td>
            </tr>
            <tr>
                <td>
                    职称
                </td>
                <td th:text="${joblevelName}"></td>
            </tr>
            <tr>
                <td>
                    部门
                </td>
                <td th:text="${departmentName}"></td>
            </tr>
        </table>
        <p>
            希望在未来的日子里,携手共进!
        </p>
    </body>
</html>
复制代码

El método de prueba es el siguiente:

@Autowired    
JavaMailSenderImpl javaMailSender;    
@Autowired    
TemplateEngine templateEngine;    
@Autowired    
MailProperties mailProperties;        
@Test    
public void sendmailtemp() throws MessagingException {        
//复杂邮件        
MimeMessage msg = javaMailSender.createMimeMessage();        
MimeMessageHelper helper = new MimeMessageHelper(msg,true);        
try {            
helper.setTo("[email protected]");            
helper.setFrom("[email protected]");            
helper.setSubject("入职欢迎");            
helper.setSentDate(new Date());            
//附件            
helper.addAttachment("配置说明.docx", new File("C:/Users/Administrator/Desktop/配置说明.docx")); Context context = new Context();            
context.setVariable("name", "江夏");            
context.setVariable("posName", "java开发工程师");            
context.setVariable("joblevelName", "高级工程师");            context.setVariable("departmentName", "研发部");            
String mail = templateEngine.process("mailtemp", context);            
helper.setText(mail, true);            
javaMailSender.send(msg);            
System.out.println(System.currentTimeMillis() + ":邮件发送成功");        } 
catch (MessagingException e) {            
e.printStackTrace();            
System.out.println(System.currentTimeMillis() + ":邮件发送失败"+ e.getMessage());        
}   
}
复制代码

Ejecute el método de prueba:

imagen.png

imagen.pngjavaMailSenderImpl proporciona el método createMimeMessage para crear correos complejos. MimeMessageHelper proporciona métodos para crear contenido de correo electrónico, como remitente, receptor, archivo adjunto, contenido de correo electrónico, etc. El envío real del correo sigue siendo el método de envío de JavaMailSenderImpl.

Resumir

Lo anterior es el contenido general y la lógica básica de springboot para construir un servicio de correo electrónico. En aplicaciones reales, se puede implementar una lógica más compleja de acuerdo con escenarios comerciales específicos, como colas de mensajes, disparadores automáticos, etc.

Si tiene alguna pregunta o error, ¡bienvenido a comunicarse, discutir y aprender juntos!

El código fuente de este proyecto está en:

github.com/JiangXia-10…

¡Bienvenido a descargar, Star!

sugerencia relacionada

Supongo que te gusta

Origin blog.csdn.net/qq_41153943/article/details/124922161
Recomendado
Clasificación