Spring Boot brinda la capacidad de enviar correos electrónicos a través de SMTP utilizando la biblioteca JavaMail . Aquí ilustraremos pautas paso a paso para desarrollar servicios web Restful que se pueden usar para enviar correos electrónicos con o sin archivos adjuntos. Para comenzar con los pasos, primero creemos un proyecto Spring Boot usando Spring Initializer .
Implementación:
Paso 1: agregar la dependencia spring-boot-starter-mail en pom.xml.
XML
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
Esta dependencia es un iniciador para usar JavaMail y puede considerarse como el soporte de envío de correo electrónico de Spring Framework.
Paso 2: configurar el archivo Application.properties con las configuraciones necesarias para usar el servidor SMTP de Gmail .
spring.mail.host=smtp.gmail.com spring.mail.port=587 spring.mail.username=<Login User to SMTP server> spring.mail.password=<Login password to SMTP server> spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true
El ID de Gmail utilizado para iniciar sesión en su cuenta de Gmail se puede proporcionar como nombre de usuario. Para la generación de contraseñas, la verificación en dos pasos debe estar habilitada para su cuenta de la siguiente manera:
Después de eso, AppPassword debe crearse utilizando la siguiente ruta:
Login to Gmail -> Manage your Google Account -> Security -> App Passwords -> Provide your login password -> Select app with a custom name -> Click on Generate
Paso 3: crear la clase EmailDetails que contiene campos como destinatario, cuerpo del mensaje, asunto y archivo adjunto.
Java
// Java Program to Illustrate EmailDetails Class package com.SpringBootEmail.Entity; // Importing required classes import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; // Annotations @Data @AllArgsConstructor @NoArgsConstructor // Class public class EmailDetails { // Class data members private String recipient; private String msgBody; private String subject; private String attachment; }
Paso 4: Creación de la interfaz EmailService e implementación de la clase EmailServiceImpl de la capa de servicio.
La interfaz EmailService define dos métodos:
- String sendSimpleMail(EmailDetails detalles): Este método se puede utilizar para enviar un correo electrónico de texto simple al destinatario deseado.
- String sendMailWithAttachment(EmailDetails detalles): este método se puede utilizar para enviar un correo electrónico junto con un archivo adjunto al destinatario deseado.
La clase de implementación de interfaz y servicio es como se muestra a continuación en el ejemplo de la siguiente manera:
Archivo: EmailService.java
Java
// Java Program to Illustrate Creation Of // Service Interface package com.SpringBootEmail.service; // Importing required classes import com.SpringBootEmail.Entity.EmailDetails; // Interface public interface EmailService { // Method // To send a simple email String sendSimpleMail(EmailDetails details); // Method // To send an email with attachment String sendMailWithAttachment(EmailDetails details); }
La interfaz JavaMailSender de JavaMail API se utiliza aquí para enviar correos electrónicos de texto simple.
Para enviar un correo electrónico más sofisticado con un archivo adjunto, se puede usar MimeMessage . MimeMessageHelper funciona como una clase de ayuda para que MimeMessage agregue el archivo adjunto y otros detalles necesarios para enviar el correo.
Archivo: EmailServiceImpl.java
Java
// Java Program to Illustrate Creation Of // Service implementation class package com.SpringBootEmail.service; // Importing required classes import com.SpringBootEmail.Entity.EmailDetails; import java.io.File; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.FileSystemResource; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Service; // Annotation @Service // Class // Implementing EmailService interface public class EmailServiceImpl implements EmailService { @Autowired private JavaMailSender javaMailSender; @Value("${spring.mail.username}") private String sender; // Method 1 // To send a simple email public String sendSimpleMail(EmailDetails details) { // Try block to check for exceptions try { // Creating a simple mail message SimpleMailMessage mailMessage = new SimpleMailMessage(); // Setting up necessary details mailMessage.setFrom(sender); mailMessage.setTo(details.getRecipient()); mailMessage.setText(details.getMsgBody()); mailMessage.setSubject(details.getSubject()); // Sending the mail javaMailSender.send(mailMessage); return "Mail Sent Successfully..."; } // Catch block to handle the exceptions catch (Exception e) { return "Error while Sending Mail"; } } // Method 2 // To send an email with attachment public String sendMailWithAttachment(EmailDetails details) { // Creating a mime message MimeMessage mimeMessage = javaMailSender.createMimeMessage(); MimeMessageHelper mimeMessageHelper; try { // Setting multipart as true for attachments to // be send mimeMessageHelper = new MimeMessageHelper(mimeMessage, true); mimeMessageHelper.setFrom(sender); mimeMessageHelper.setTo(details.getRecipient()); mimeMessageHelper.setText(details.getMsgBody()); mimeMessageHelper.setSubject( details.getSubject()); // Adding the attachment FileSystemResource file = new FileSystemResource( new File(details.getAttachment())); mimeMessageHelper.addAttachment( file.getFilename(), file); // Sending the mail javaMailSender.send(mimeMessage); return "Mail sent Successfully"; } // Catch block to handle MessagingException catch (MessagingException e) { // Display message when exception occurred return "Error while sending mail!!!"; } } }
Paso 5: Creación de un Rest Controller EmailController que define varias API para enviar correos electrónicos.
Java
// Java Program to Create Rest Controller that // Defines various API for Sending Mail package com.SpringBootEmail.controller; // Importing required classes import com.SpringBootEmail.Entity.EmailDetails; import com.SpringBootEmail.service.EmailService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; // Annotation @RestController // Class public class EmailController { @Autowired private EmailService emailService; // Sending a simple Email @PostMapping("/sendMail") public String sendMail(@RequestBody EmailDetails details) { String status = emailService.sendSimpleMail(details); return status; } // Sending email with attachment @PostMapping("/sendMailWithAttachment") public String sendMailWithAttachment( @RequestBody EmailDetails details) { String status = emailService.sendMailWithAttachment(details); return status; } }
Paso 6: ejecutar la aplicación Spring Boot y presionar http://localhost:8080/sendMail para enviar un correo electrónico simple
El correo recibido en Gmail es el siguiente:
Paso 7: Ejecute la aplicación Spring Boot y presione http://localhost:8080/sendMailWithAttachment para enviar un correo electrónico junto con un archivo adjunto.
El correo recibido en Gmail es el siguiente:
Publicación traducida automáticamente
Artículo escrito por akankshapatro y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA