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á.