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)

黄舟
黄舟Original
2017-03-09 10:10:202030Durchsuche

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>

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

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);
 }
}

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);
}

Hier ist zu beachten, dass der Ressourcenname weixin in der addInline-Funktion dem cid:weixin im Text

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);
}
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>

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>

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);
}

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!

Stellungnahme:
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