検索
ホームページJava&#&チュートリアルJavaMailSender を使用して Spring Boot で電子メールを送信する方法の例 (ソースコードを添付)

この記事では、Spring Boot で JavaMailSender を使用して電子メールを送信する方法の例を主に紹介します。Spring を使用したことのある多くの開発者は、Spring が電子メールを送信するための非常に使いやすい JavaMailSender インターフェイスを提供していることを知っていると思います。自動構成は Spring Boot の Starter モジュールでも提供されます。困っている友達は参考にしてください。

クイックスタート

Spring Boot プロジェクトの pom.xml に spring-boot-starter-mail 依存関係を導入します:

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

他の自動構成モジュールと同様に、完了後 依存関係の導入後の場合は、application.properties で対応するプロパティの内容を設定するだけです。 application.properties中配置相应的属性内容。

下面我们以QQ邮箱为例,在application.properties中加入如下配置(注意替换自己的用户名和密码):

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

通过单元测试来实现一封简单邮件的发送:

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

到这里,一个简单的邮件发送就完成了,运行一下该单元测试,看看效果如何?

“由于Spring Boot的starter模块提供了自动化配置,所以在引入了spring-boot-starter-mail依赖之后,会根据配置文件中的内容去创建JavaMailSender实例,因此我们可以直接在需要使用的地方直接@Autowired来引入邮件发送对象。”

进阶使用

在上例中,我们通过使用SimpleMailMessage实现了简单的邮件发送,但是实际使用过程中,我们还可能会带上附件、或是使用邮件模块等。这个时候我们就需要使用MimeMessage来设置复杂一些的邮件内容,下面我们就来依次实现一下。

发送附件

在上面单元测试中加入如下测试用例(通过MimeMessageHelper来发送一封带有附件的邮件):

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

嵌入静态资源

除了发送附件之外,我们在邮件内容中可能希望通过嵌入图片等静态资源,让邮件获得更好的阅读体验,而不是从附件中查看具体图片,下面的测试用例演示了如何通过MimeMessageHelper实现在邮件正文中嵌入静态资源。

@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\"  alt="JavaMailSender を使用して Spring Boot で電子メールを送信する方法の例 (ソースコードを添付)" ></body></html>", true);
 FileSystemResource file = new FileSystemResource(new File("weixin.jpg"));
 helper.addInline("weixin", file);
 mailSender.send(mimeMessage);
}

这里需要注意的是addInline函数中资源名称weixin需要与正文中cid:weixin对应起来

模板邮件

通常我们使用邮件发送服务的时候,都会有一些固定的场景,比如重置密码、注册确认等,给每个用户发送的内容可能只有小部分是变化的。所以,很多时候我们会使用模板引擎来为各类邮件设置成模板,这样我们只需要在发送时去替换变化部分的参数即可。

在Spring Boot中使用模板引擎来实现模板化的邮件发送也是非常容易的,下面我们以velocity为例实现一下。

引入velocity模块的依赖:

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-velocity</artifactId>
</dependency>

在resources/templates/下,创建一个模板页面template.vm:

<html>
<body>
 <h3 id="你好-nbsp-username-nbsp-这是一封模板邮件">你好, ${username}, 这是一封模板邮件!</h3>
</body>
</html>

我们之前在Spring Boot中开发Web应用时,提到过在Spring Boot的自动化配置下,模板默认位于resources/templates/目录下

最后,我们在单元测试中加入发送模板邮件的测试用例,具体如下:

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

尝试运行一下,就可以收到内容为你好, didi, 这是一封模板邮件!的邮件。这里,我们通过传入username的参数,在邮件内容中替换了模板中的${username}

以下では、QQ メールボックスを例として、次の設定を application.properties に追加します (ユーザー名とパスワードを置き換えることに注意してください):


rrreee🎜🎜🎜🎜単体テストを使用して、 email 単純な電子メールの送信: 🎜🎜🎜🎜rrreee🎜🎜🎜 この時点で、単体テストを実行して、その効果を確認します。 🎜🎜「Spring Boot のスターター モジュールは自動構成を提供するため、spring-boot-starter-mail 依存関係を導入した後、構成ファイルの内容に基づいて JavaMailSender インスタンスが作成されるため、必要な場所で直接使用できます。 @Autowired を使用してメール送信オブジェクトを導入します。「🎜🎜🎜🎜高度な使い方🎜🎜🎜🎜」 上記の例では、SimpleMailMessage を使用して単純なメール送信を実装しましたが、実際の使用では、添付ファイルを持ち込んだり、メール モジュールを使用したりすることもできます。 、など。このとき、より複雑なメール内容を設定するにはMimeMessageを使用する必要があります。それを一つずつ実装してみましょう。 🎜🎜🎜添付ファイルを送信する🎜🎜🎜上記の単体テストに次のテスト ケースを追加します (MimeMessageHelper を介して添付ファイル付きのメールを送信します): 🎜🎜🎜rrreee🎜🎜🎜🎜静的リソースを埋め込む🎜🎜🎜添付ファイルの送信に加えて、添付ファイルから特定の画像を表示するのではなく、電子メールのコンテンツに画像などの静的リソースを埋め込んで、電子メールを読みやすくしたい場合 次のテスト ケースは、 MimeMessageHelper を通じて電子メール本文に静的リソースを埋め込む方法を示しています。 🎜🎜🎜rrreee🎜🎜🎜ここで注意する必要があるのは、addInline関数内のリソース名weixinがテキスト内のcid:weixinに対応している必要があるということです🎜🎜🎜テンプレートメール🎜🎜🎜通常、メール送信サービスを使用する場合、パスワードのリセット、登録確認など、いくつかの固定シナリオがあり、各ユーザーに送信されるコンテンツのごく一部のみが変更される可能性があります。そのため、多くの場合、テンプレート エンジンを使用してさまざまな種類のメールのテンプレートを設定し、送信時に変更されたパラメータを置き換えるだけで済みます。 🎜🎜 Spring Boot のテンプレート エンジンを使用して、テンプレート化された電子メール送信を実装することも非常に簡単です。これを実装する例として、Velocity を取り上げてみましょう。 🎜🎜Velocity モジュールの依存関係を紹介します: 🎜🎜🎜rrreee🎜🎜🎜 resource/templates/ の下に、テンプレート ページ template.vm を作成します: 🎜🎜🎜rrreee🎜🎜🎜 Spring Boot で Web アプリケーションを開発するときに前述しました。 Spring Boot の自動構成。テンプレートはデフォルトで resource/templates/ ディレクトリにあります🎜🎜最後に、次のように、テンプレートメールを単体テストに送信するためのテストケースを追加します:🎜🎜🎜rrreee🎜🎜🎜実行してみてください🎜 ディディ、これはテンプレート メールです 🎜🎜。ここでは、username パラメータを渡すことで、電子メール コンテンツ内のテンプレート内の ${username} 変数を置き換えます。 🎜🎜🎜🎜

以上がJavaMailSender を使用して Spring Boot で電子メールを送信する方法の例 (ソースコードを添付)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境