ホームページ  >  記事  >  Java  >  SpringBootの統合メールサービスの詳細説明(コード付き)

SpringBootの統合メールサービスの詳細説明(コード付き)

不言
不言転載
2018-10-09 14:23:513583ブラウズ

この記事では、SpringBoot の統合メール サービスについて詳しく説明します (コード付き)。必要な方は参考にしていただければ幸いです。

1. 前書き

Spring Email 抽象化の中心となるのは、MailSender の実装でメール サーバーにメールを送信でき、メール サーバーはメール送信機能を実装します。 。

SpringBootの統合メールサービスの詳細説明(コード付き)

Spring には、JavaMail API を使用して電子メールを送信する MailSender 実装である JavaMailSenderImpl が付属しています。 Spring または SpringBoot アプリケーションが電子メールを送信できるようにするには、Spring アプリケーション コンテキストで JavaMailSenderImpl を Bean としてアセンブルする必要があります。

2. 構成

1. pom.xml

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

2. application.yml

spring:
  mail:
    host: smtp.163.com
    port: 25
    username: 159****2662@163.com
    password: ***********

のホストがデフォルトになります。 JavaMail セッション ; ポート port はデフォルトで標準 SMTP ポート 25 をリッスンします。メールサーバーが認証を必要とする場合は、ユーザー名とパスワードも設定する必要があります。

ここでは 163 メール サーバーを使用しています。163 メールボックスでクライアント認証パスワードを有効にする必要があります。そうしないと、550 認証エラーが報告されます。

SpringBootの統合メールサービスの詳細説明(コード付き)

3. EmailConfig.java

ここでは、JavaMailSenderImpl を Spring アプリケーション コンテキストの Bean としてアセンブルします。同時に、ここでは @ConfigurationProperties アノテーションが使用されていることに注意してください。このアノテーションはプロパティにセッター メソッドが必要であり、それを有効にするためにスタートアップ クラスで @EnableConfigurationProperties アノテーションが使用されます。

@Configuration
@ConfigurationProperties(prefix = "spring.mail")
public class EmailConfig {
    private String host;
    private Integer port;
    private String username;
    private String password;
    @Bean
    public MailSender javaMailSender() {
        JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
        javaMailSender.setHost(host);
        javaMailSender.setPort(port);
        javaMailSender.setUsername(username);
        javaMailSender.setPassword(password);
        return javaMailSender;
    }
    public void setHost(String host) {
        this.host = host;
    }
    public void setPort(Integer port) {
        this.port = port;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}

3. 送信

javaMailSender を使用すると、電子メールの送信が簡単になります。必要なのは、javaMailSender Bean を独自の実装クラスに挿入し、JavaMail API を使用して電子メールを送信することだけです。

1. テキスト電子メールの送信

public void sendSimpleEmail() {
    // 构造Email消息
    SimpleMailMessage message = new SimpleMailMessage();
    message.setFrom("159****2662@163.com");
    message.setTo("****@qianxx.com");
    message.setSubject("邮件主题");
    message.setText("邮件内容");
    javaMailSender.send(message);
}

プレーンテキスト電子メールは、SimpleMailMessage インスタンスを構築することで簡単に電子メール メッセージを送信できます。

2. 添付メールの送信

Spring のメール機能はプレーンテキストメールに限定されません。添付ファイルを追加することもできます。添付ファイル付きの電子メールを送信する場合の重要なトリックは、 マルチパート型メッセージ————メールは複数の部分で構成されており、1 つの部分はメール本文、他の部分は添付ファイルです。マルチパートを送信するには 電子メールの種類の場合は、MIME (MultiPurpose Internet Mail Extensions) メッセージを作成する必要があります。

public void mimeEmail() throws MessagingException {
    // MimeMessage 本身的 API 有些笨重,我们可以使用 MimeMessageHelper
    MimeMessage mimeMessage = javaMailSender.createMimeMessage();
    // 第二个参数是 true ,表明这个消息是 multipart类型的/
    MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
    mimeMessageHelper.setFrom("159****2662@163.com");
    mimeMessageHelper.setTo("****@qianxx.com");
    mimeMessageHelper.setSubject("附件邮件主题");
    mimeMessageHelper.setText("附件邮件内容");
    //添加附件,第一个参数表示添加到 Email 中附件的名称,第二个参数是图片资源
    mimeMessageHelper.addAttachment("boot.png", new ClassPathResource("public/images/boot.png"));
    javaMailSender.send(mimeMessage);
}

3. リッチ テキスト メールの送信

Spring の電子メール機能では、添付ファイルの追加に加えて、HTML を使用してメッセージ本文の内容を美しくすることもできます。リッチ テキスト メールの送信と単純なテキスト メールの送信 電子メールも大きな違いはありません。重要なのは、setText() メソッドのメッセージ テキストを HTML に設定し、2 番目のパラメータを true に設定して、これが HTML であることを示すことです。 リッチテキストの。

public void htmlEmail() throws MessagingException {
    MimeMessage mimeMessage = javaMailSender.createMimeMessage();
    MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
    mimeMessageHelper.setFrom("159****2662@163.com");
    mimeMessageHelper.setTo("****@qianxx.com");
    mimeMessageHelper.setSubject("富文本邮件主题");
    String html = "<html><body><h4>Hello,SpringBoot</h4><img  src=&#39;cid:boot&#39; / alt="SpringBootの統合メールサービスの詳細説明(コード付き)" ></body></html>";
    mimeMessageHelper.setText(html, true);
    // 设置内嵌元素 cid,第一个参数表示内联图片的标识符,第二个参数标识资源引用
    mimeMessageHelper.addInline("boot", new ClassPathResource("public/images/boot.png"));
    javaMailSender.send(mimeMessage);
}

4. 結論

HTML タグの文字列の結合は非常に難しいものです。頭の中で HTML タグを解析し、レンダリングされたときにどのように見えるかを想像するのは難しいからです。 HTML と Java コードを混合すると、問題はさらに複雑になります。

したがって、Spring が提供する解決策は、テンプレートを使用して電子メールを生成することです。Apache Velocity や Thymeleaf など、さまざまなテンプレート ソリューションから選択できます。 (私はこれら 2 つのテンプレート構文があまり得意ではないため、詳しくは紹介しません)。

デモ ソース コード: https://github.com/JMCuixy/Boot

以上がSpringBootの統合メールサービスの詳細説明(コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。