template starter protocol mail example java spring spring-boot javamail

java - starter - spring mail protocol



Envío de correo electrónico a través de Spring Boot "spring-boot-starter-mail" (3)

Mi recomendación es usar la it.ozimov:spring-boot-email-core , que oculta todas estas implementaciones detrás de un único componente llamado EmailService ; bueno, también estoy desarrollando la biblioteca :).

Tu ejemplo sería:

@Autowired public EmailService emailService; public void sendEmail(){ final Email email = DefaultEmail.builder() .from(new InternetAddress("[email protected]")) .replyTo(new InternetAddress("someone@localhost")) .to(Lists.newArrayList(new InternetAddress("someone@localhost"))) .subject("Lorem ipsum") .body("Lorem ipsum dolor sit amet [...]") .encoding(Charset.forName("UTF-8")).build(); emailService.send(email); }

Con las siguientes application.properties :

spring.mail.host=your.smtp.com spring.mail.port=587 spring.mail.username=test spring.mail.password=test spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true spring.mail.properties.mail.smtp.starttls.required=true

También admite algunos motores de plantillas, como Freemarker , Moustache y Pebble , mientras que puedes extenderlo para usar más motores de plantillas. Además, también es compatible con la programación de correo electrónico y la priorización (por ejemplo, alta prioridad para la recuperación de la contraseña y baja prioridad para el boletín informativo).

Hay un artículo en LinkedIn que explica cómo usarlo. Esta here

Estoy intentando enviar correos electrónicos usando Spring Boot, pero estoy recibiendo:

java.lang.UnsupportedOperationException: Method not yet implemented at javax.mail.internet.MimeMessage.<init>(MimeMessage.java:89) at org.springframework.mail.javamail.SmartMimeMessage.<init>(SmartMimeMessage.java:52) at org.springframework.mail.javamail.JavaMailSenderImpl.createMimeMessage(JavaMailSenderImpl.java:325)

He utilizado esta entrada maven:

<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.2.6.RELEASE</version> </parent> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>1.2.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> <version>1.2.6.RELEASE</version> </dependency>

application.properties:

spring.mail.host=smtp.gmail.com spring.mail.port= 25 spring.mail.username= test spring.mail.password= test

Y mi codigo

@Autowired private JavaMailSender javaMailSender; private void send() { MimeMessage mail = javaMailSender.createMimeMessage(); try { MimeMessageHelper helper = new MimeMessageHelper(mail, true); helper.setTo("[email protected]"); helper.setReplyTo("someone@localhost"); helper.setFrom("someone@localhost"); helper.setSubject("Lorem ipsum"); helper.setText("Lorem ipsum dolor sit amet [...]"); } catch (MessagingException e) { e.printStackTrace(); } finally {} javaMailSender.send(mail); //return helper; }

¡Esto parece ser un sencillo pero no hagas lo que me estoy perdiendo!


No utilice javaMailSender.createMimeMessage(); intente usar MimeMessagePreparator & MimeMessageHelper en MimeMessageHelper lugar


Tiene una segunda versión de javax.mail.internet.MimeMessage en el classpath además de la que se ingresó a través spring-boot-starter-mail . Un culpable común es el tarro de especificaciones de JavaMail de Geronimo. Sea cual sea el jarro, debe excluirlo de las dependencias de su aplicación. Si no está seguro de dónde viene, ejecutar su aplicación con -verbose:class le dirá.