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