Mail senden in Spring / Java
Um Mails über einen SMTP-Server in Spring zu versenden, wollen wir das JavaMailSender Interface benutzen. Hierzu müssen wir die JavaMailSenderImpl-Klasse konfigurieren, welche das Interface umsetzt:
1. Maven dependencies
Als erstes müssen wir unser pom.xml um die entsprechenden Libraries ergänzen, wobei die entsprechenden Versions-Nummern auf die aktuelle Version zeigen sollten:
<properties>
<spring.version>5.2.18.RELEASE</spring.version>
<email.version>1.16.2</email.version>
</properties>
<!-- Spring Context Support -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>${email.version}</version>
</dependency>
Code-Sprache: HTML, XML (xml)
2. Konfiguration
Danach müssen wir die Daten des SMTP-Servers bereitstellen. Dies machen wir programmatisch über eine @Configuration-Klasse.
EmailConfig.java:
import java.util.Properties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
@Configuration
public class EmailConfig
{
@Bean
public JavaMailSender getJavaMailSender()
{
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost("smtp.beispielmailserver.com");
mailSender.setPort(25);
mailSender.setUsername("[email protected]");
mailSender.setPassword("passwort");
Properties props = mailSender.getJavaMailProperties();
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.debug", "true");
return mailSender;
}
}
Code-Sprache: JavaScript (javascript)
3. Mail versenden
Nun können wir die so konfigurierte Klasse über Dependency Injection in einem Service verwenden, um darüber eine Mail zu versenden.
EmailService.java:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.stereotype.Service;
@Service("emailService")
public class EmailService
{
@Autowired
private JavaMailSender mailSender;
/**
* Versenden einer Email
*/
public void sendMail(String from, String to, String subject, String body)
{
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(from);
message.setTo(to);
message.setSubject(subject);
message.setText(body);
mailSender.send(message);
}
}
Code-Sprache: JavaScript (javascript)