Heim > Java > javaLernprogramm > Beispiel für die Verwendung von JavaMailSender zum Senden von E-Mails in Spring Boot (Quellcode im Anhang)

Beispiel für die Verwendung von JavaMailSender zum Senden von E-Mails in Spring Boot (Quellcode im Anhang)

黄舟
Freigeben: 2017-03-09 10:10:20
Original
1991 Leute haben es durchsucht

In diesem Artikel werden hauptsächlich Beispiele für die Verwendung von JavaMailSender zum Senden von E-Mails in Spring Boot vorgestellt. Ich glaube, dass viele Entwickler, die Spring verwendet haben, wissen, dass Spring eine sehr benutzerfreundliche JavaMailSender-Schnittstelle zum Senden von E-Mails bietet. Die automatische Konfiguration ist auch im Starter-Modul von Spring Boot verfügbar. Freunde in Not können sich darauf berufen.

Schnellstart

Führen Sie die Spring-Boot-Starter-Mail-Abhängigkeit in pom.xml im Spring Boot-Projekt ein:

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
Nach dem Login kopieren

Wie bei anderen automatisierten Konfigurationsmodulen müssen Sie nach Abschluss der Abhängigkeitseinführung nur noch den entsprechenden Attributinhalt in application.properties konfigurieren.

Nehmen wir das QQ-Postfach als Beispiel und fügen die folgende Konfiguration in application.properties hinzu (Hinweis zum Ersetzen Ihres Benutzernamens und Passworts):

spring.mail.host=smtp.qq.com
spring.mail.username=用户名
spring.mail.password=密码
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
Nach dem Login kopieren

Verwenden Sie Unit-Tests, um eine einfache E-Mail zu senden:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
public class ApplicationTests {
 @Autowired
 private JavaMailSender mailSender;
 @Test
 public void sendSimpleMail() throws Exception {
 SimpleMailMessage message = new SimpleMailMessage();
 message.setFrom("dyc87112@qq.com");
 message.setTo("dyc87112@qq.com");
 message.setSubject("主题:简单邮件");
 message.setText("测试邮件内容");
 mailSender.send(message);
 }
}
Nach dem Login kopieren

Hier wird eine einfache E-Mail gesendet. Das ist es Führen Sie den Unit-Test durch und sehen Sie, wie er funktioniert.

„Da das Startermodul von Spring Boot eine automatisierte Konfiguration bietet, wird nach Einführung der Spring-Boot-Starter-Mail-Abhängigkeit eine JavaMailSender-Instanz basierend auf dem Inhalt in der Konfigurationsdatei erstellt, sodass wir sie direkt konfigurieren können, wenn.“ erforderlich Verwenden Sie @Autowired direkt, um das E-Mail-Sendeobjekt einzuführen Wird für den einfachen E-Mail-Versand verwendet, bei der tatsächlichen Verwendung können wir jedoch auch Anhänge mitbringen oder das E-Mail-Modul usw. verwenden. Zu diesem Zeitpunkt müssen wir MimeMessage verwenden, um komplexere E-Mail-Inhalte festzulegen. Lassen Sie uns diese einzeln implementieren.

Anhang sendenFügen Sie den folgenden Testfall zum obigen Komponententest hinzu (senden Sie eine E-Mail mit Anhang über MimeMessageHelper):

Statische Ressourcen einbetten

Zusätzlich zum Senden von Anhängen möchten wir möglicherweise statische Ressourcen wie Bilder in den E-Mail-Inhalt einbetten, um ihn zu erhalten Um ein besseres Leseerlebnis der E-Mail zu erzielen, anstatt bestimmte Bilder aus dem Anhang anzuzeigen, zeigt der folgende Testfall, wie statische Ressourcen über MimeMessageHelper in den E-Mail-Text eingebettet werden.
@Test
public void sendAttachmentsMail() throws Exception {
 MimeMessage mimeMessage = mailSender.createMimeMessage();
 MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
 helper.setFrom("dyc87112@qq.com");
 helper.setTo("dyc87112@qq.com");
 helper.setSubject("主题:有附件");
 helper.setText("有附件的邮件");
 FileSystemResource file = new FileSystemResource(new File("weixin.jpg"));
 helper.addAttachment("附件-1.jpg", file);
 helper.addAttachment("附件-2.jpg", file);
 mailSender.send(mimeMessage);
}
Nach dem Login kopieren

Hier ist zu beachten, dass der Ressourcenname weixin in der addInline-Funktion dem cid:weixin im Text <🎜 entsprechen muss >

Vorlagen-E-Mails

@Test
public void sendInlineMail() throws Exception {
 MimeMessage mimeMessage = mailSender.createMimeMessage();
 MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
 helper.setFrom("dyc87112@qq.com");
 helper.setTo("dyc87112@qq.com");
 helper.setSubject("主题:嵌入静态资源");
 helper.setText("<html><body><img src=\"cid:weixin\" ></body></html>", true);
 FileSystemResource file = new FileSystemResource(new File("weixin.jpg"));
 helper.addInline("weixin", file);
 mailSender.send(mimeMessage);
}
Nach dem Login kopieren
Wenn wir E-Mail-Versanddienste nutzen, gibt es normalerweise einige feste Szenarien, wie z. B. das Zurücksetzen des Passworts, die Bestätigung der Registrierung usw., und nur ein kleiner Teil davon Der an jeden Benutzer gesendete Inhalt kann sich ändern. Daher verwenden wir oft eine Template-Engine, um Vorlagen für verschiedene Arten von E-Mails festzulegen, sodass wir beim Senden nur die geänderten Parameter ersetzen müssen.

Es ist auch sehr einfach, die Template-Engine in Spring Boot zu verwenden, um den E-Mail-Versand mit Vorlagen zu implementieren. Nehmen wir Velocity als Beispiel für die Implementierung.

Stellen Sie die Abhängigkeiten des Geschwindigkeitsmoduls vor:

Erstellen Sie unter resources/templates/ eine Vorlagenseite template.vm:

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-velocity</artifactId>
</dependency>
Nach dem Login kopieren

Als wir zuvor Webanwendungen in Spring Boot entwickelt haben, haben wir erwähnt, dass sich Vorlagen bei der automatisierten Konfiguration von Spring Boot in den Ressourcen/Vorlagen/ befinden.

Schließlich fügen wir einen Testfall zum Senden von Vorlagen-E-Mails an den Unit-Test hinzu, wie folgt:

<html>
<body>
 <h3>你好, ${username}, 这是一封模板邮件!</h3>
</body>
</html>
Nach dem Login kopieren

Versuchen Sie es einfach auszuführen. Sie können den Inhalt zu Ihrem Vorteil erhalten,

Didi, dies ist eine E-Mail-Vorlage

. Hier ersetzen wir die Variable

in der Vorlage im E-Mail-Inhalt, indem wir den Parameter „Benutzername“ übergeben.
@Test
public void sendTemplateMail() throws Exception {
 MimeMessage mimeMessage = mailSender.createMimeMessage();
 MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
 helper.setFrom("dyc87112@qq.com");
 helper.setTo("dyc87112@qq.com");
 helper.setSubject("主题:模板邮件");
 Map<String, Object> model = new HashedMap();
 model.put("username", "didi");
 String text = VelocityEngineUtils.mergeTemplateIntoString(
 velocityEngine, "template.vm", "UTF-8", model);
 helper.setText(text, true);
 mailSender.send(mimeMessage);
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonBeispiel für die Verwendung von JavaMailSender zum Senden von E-Mails in Spring Boot (Quellcode im Anhang). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage