Seguimos con otro post sobre Spring Boot, en este caso relacionado con el envío de correos electrónicos. Y al final lo enlazaremos para poder usarlo con Amazon Simple Email Service.
Para empezar, lo básico. Añadir Spring boot nuestro proyecto via Maven. Para ello indicamos que nuestro proyecto hereda de 'spring-boot-starter-parent' y que vamos a utilizar 'spring-boot-starter-mail'.
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.0.RELEASE</version> <relativePath /> </parent> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
Tras esto, viene la configuración básica para utilizar un servidor SMTP a través de Spring Boot. Por lo que como es habitual, rellenamos las propiedades apropiadas en el fichero application.properties.
spring.mail.host={TU_HOST} spring.mail.port={HOST_PORT/25} spring.mail.protocol=smtp
Tras esto, ya solo nos quedará inyectar en alguna de nuestras clases 'JavaMailSender'. Y utilizar a este mismo para enviar el correo. Así de facil y rápido.
@Autowired private JavaMailSender javaMailService; ...... SimpleMailMessage mailMessage = new SimpleMailMessage(); mailMessage.setTo( para ); mailMessage.setFrom( de); mailMessage.setSubject( tituloCorreo); mailMessage.setText( contenidoCorreo); javaMailService.send( mailMessage );
Ahora vamos a ver como debemos configurarlo y usarlo si queremos enviar a través de AWS SES y además no enviar texto plano, sino HTML. El primer paso para ello será modificar la configuración de la siguiente forma:
spring.mail.host={TU_HOST} spring.mail.password={TU_CLAVE_SES} spring.mail.port=465 spring.mail.protocol=smtps spring.mail.username={TU_USUARIO_SES} spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true spring.mail.properties.mail.smtp.starttls.required=true spring.mail.properties.mail.smtp.ssl.enable = true spring.mail.properties.mail.transport.protocol=smtps
Y a la hora de enviar el mail debemos dejar de usar 'SimpleMailMessage' y usar 'MimeMessage' y su Helper. Eso si, el 'body' del mensaje debe de tener sus etiquetas HTML.
MimeMessage mailMessage = javaMailService.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper( mailMessage, false, "utf-8" ); helper.setTo( para ); helper.setFrom( de ); helper.setSubject( tituloCorreo ); mailMessage.setContent( contenidoCorreo , "text/html" ); javaMailService.send( mailMessage );
No hay comentarios:
Publicar un comentario