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

JavaMailSender を使用して Spring Boot で電子メールを送信する方法の例 (ソースコードを添付)

Mar 09, 2017 am 10:10 AM

この記事では、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\" ></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>你好, ${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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Spring Boot と OpenAI の出会いによる新しいプログラミング パラダイム Spring Boot と OpenAI の出会いによる新しいプログラミング パラダイム Feb 01, 2024 pm 09:18 PM

2023年、AI技術が注目を集め、プログラミング分野を中心にさまざまな業界に大きな影響を与えています。 AI テクノロジーの重要性に対する人々の認識はますます高まっており、Spring コミュニティも例外ではありません。 GenAI (汎用人工知能) テクノロジーの継続的な進歩に伴い、AI 機能を備えたアプリケーションの作成を簡素化することが重要かつ緊急になっています。このような背景から、AI 機能アプリケーションの開発プロセスを簡素化し、シンプルかつ直観的にし、不必要な複雑さを回避することを目的とした「SpringAI」が登場しました。 「SpringAI」により、開発者はAI機能を搭載したアプリケーションをより簡単に構築でき、使いやすく、操作しやすくなります。

Spring Boot と Spring AI を使用して生成人工知能アプリケーションを構築する Spring Boot と Spring AI を使用して生成人工知能アプリケーションを構築する Apr 28, 2024 am 11:46 AM

Spring+AI は業界リーダーとして、強力で柔軟な API と高度な機能を通じてさまざまな業界に最先端のソリューションを提供します。このトピックでは、さまざまな分野での Spring+AI の応用例を詳しく掘り下げ、Spring+AI がどのように特定のニーズを満たし、目標を達成し、これらの教訓をより広範囲のアプリケーションに拡張するかを示します。このトピックが Spring+AI の無限の可能性をより深く理解し、活用するきっかけになれば幸いです。 Spring フレームワークはソフトウェア開発の分野で 20 年以上の歴史があり、Spring Boot 1.0 バージョンがリリースされてから 10 年が経過しました。今、その春に異論を唱える人はいない

Springプログラマティックトランザクションの実装方法は何ですか? Springプログラマティックトランザクションの実装方法は何ですか? Jan 08, 2024 am 10:23 AM

Spring プログラムによるトランザクションを実装する方法: 1. TransactionTemplate を使用する; 2. TransactionCallback および TransactionCallbackWithoutResult を使用する; 3. Transactional アノテーションを使用する; 4. TransactionTemplate を @Transactional と組み合わせて使用​​する; 5. トランザクション マネージャーをカスタマイズする。

PHP 開発の実践: PHPMailer を使用して MySQL データベース内のユーザーに電子メールを送信する PHP 開発の実践: PHPMailer を使用して MySQL データベース内のユーザーに電子メールを送信する Aug 05, 2023 pm 06:21 PM

PHP 開発の実践: PHPMailer を使用して MySQL データベース内のユーザーに電子メールを送信する はじめに: 現代のインターネットの構築において、電子メールは重要なコミュニケーション ツールです。 ECにおけるユーザー登録やパスワードのリセット、注文確認など、メール送信は欠かせない機能です。この記事では、PHPMailer を使用してメールを送信し、メール情報を MySQL データベースのユーザー情報テーブルに保存する方法を紹介します。 1. PHPMailer ライブラリをインストールする PHPMailer は

Spring Boot と Spring Cloud の違いと関係 Spring Boot と Spring Cloud の違いと関係 Jun 22, 2023 pm 06:25 PM

SpringBoot と SpringCloud は両方とも、開発者がマイクロサービス アプリケーションをより迅速に構築およびデプロイできるようにする Spring Framework の拡張機能ですが、それぞれ異なる目的と機能を持っています。 SpringBoot は、Java アプリケーションを迅速に構築するためのフレームワークであり、開発者は Spring ベースのアプリケーションをより迅速に作成してデプロイできるようになります。スタンドアロンの実行可能な Spring アプリケーションを構築するための、シンプルでわかりやすい方法を提供します。

Flask-Mailを使用してメールを送信する方法 Flask-Mailを使用してメールを送信する方法 Aug 02, 2023 am 10:17 AM

Flask-Mail を使用して電子メールを送信する方法 インターネットの発展に伴い、電子メールは人々がコミュニケーションを図るための重要なツールになりました。 Web アプリケーションを開発する場合、ユーザーが正常に登録した後にウェルカム メールを送信したり、ユーザーがパスワードを忘れたときにパスワード リセット メールを送信したりするなど、特定のシナリオでメールを送信する必要がある場合があります。 Flask はシンプルで柔軟な Python Web フレームワークであり、Flask-Mail は Flask フレームワークでメールを送信するための拡張ライブラリです。

Spring でトランザクション分離レベルを設定する方法 Spring でトランザクション分離レベルを設定する方法 Jan 26, 2024 pm 05:38 PM

Spring でトランザクション分離レベルを設定する方法: 1. @Transactional アノテーションを使用します; 2. Spring 構成ファイルに設定します; 3. PlatformTransactionManager を使用します; 4. Java 構成クラスに設定します。詳細な導入方法: 1. @Transactional アノテーションを使用し、トランザクション管理が必要なクラスまたはメソッドに @Transactional アノテーションを追加し、属性に分離レベルを設定します。 2. Spring の設定ファイルなどで

史上最も強力な組織 Spring で最もよく使用される 7 つのアノテーション! 史上最も強力な組織 Spring で最もよく使用される 7 つのアノテーション! Jul 26, 2023 pm 04:38 PM

テクノロジーの更新と反復により、Java5.0 はアノテーションをサポートし始めました。 Java の主要なフレームワークである Spring は、バージョン 2.5 に更新されて以来、徐々に XML 構成を放棄し始めており、Spring フレームワークを制御するために使用されるアノテーションが増えています。

See all articles