Spring MailはJavamailのメールサービスをカプセル化し、メールサービスを使いやすくします。 QQメールボックスサーバーを例として取り、Spring Mail Serviceを使用してメールを送信します。
QQメールボックス、「設定」 - 「アカウント」を構成し、SMTPサービスを開き、認証コードを生成する
承認コードを生成するには、携帯電話の検証が必要です。次に、QQメールアカウントと承認コードを使用してメールを送信できます。QQパスワードは必要ありません。
Spring Mail ServiceはSpring-Context-Supportで構成されており、QQメールボックスが提供する送信サーバーで電子メールを送信できます。
<Dependency> groupId> javax.mail </groupid> <artifactid>メール</artifactid> <バージョン> 1.4.7 </version> </dependency> <dependency> springframework </groupid> <artifactid> spring-context-support </artifactid> </2.17.> <.17.> <.17.
通常のテキストメール
最初のテストは通常のテキストメールです
パッケージcom.xmyself.mail; Import org.springframework.mail.simplemailmessage; Import org.springframework.mail.javamail.javamailsenderimpl; public class main {public static void main(string [] args){javamailsenderimpl mailsender = new javamailsenderimpl(); mailsender.sethost( "smtp.qq.com"); mailsender.setport(587); mailsender.setusername( "[email protected]"); mailsender.setPassword( "dsruklozelxcbdba"); //承認コードsimplemailmessage mail = new simplemailmessage(); mail.setto( "[email protected]"); mail.setfrom( "[email protected]"); mail.setsubject( "Test Mail"); mail.settext( "テストメールコンテンツ"); mailsender.send(mail); system.out.println( "success"); }}それを実行してメールを送信します。注:承認コードはパスワードではなく、ポートは25ではなく587です
次に、メールセンダーを変更せずに保ち、メールタイプを変更し、リッチメールメッセージを送信します
簡単なHTMLメール
メールコンテンツをHTML形式で表示し、次のように変更するだけです
mimemessage mail = mailsender.createmimemessage(); mimemessagehelper helper = new mimemessagehelper(mail、true); // trueはマルチパートモードをオンにし、画像または添付ファイルを追加するために使用されますhelper.setto( "[email protected]"); helper.setfrom( "[email protected]"); helper.setsubject( "test mail"); helper.settext( "<html> <head> </head> <body>" <h1> hello !! spring html mail </h1> " +" + " "</body> </html>"、true);
メールセンダーを使用してこのメールを送信します
mailsender.send(mail);
写真付きのhtmlメール
電子メールのHTMLコンテンツに画像表示を挿入し、テキストコンテンツを変更します
helper.settext( "<html> <head> </head> <body>" + "<h1> hello !! spring html mail </h1>" + "<img src =/" cid:image/"/>" + "</body> </html>"、true); filesystem -reresurce = new files -systemresource(new filesystemresource(新しいファイルfile( "d:/test.jpg")); helper.addinline( "image"、image);
添付ファイル付きHTMLメール
添付ファイルを電子メールに追加すると、テキストコンテンツは変わらず、次のように変更するだけです
helper.settext( "<html> <head> </head> <body>" + "<h1> hello !! spring html mail </h1>" + "</body> </html>"、true); filesystemresource image = new filesystemresource(new file( "d:/test.jpg"); helper.addatticment( "d:/test.jpg);
Freemarkerテンプレートメール
HTMLコンテンツは通常非常に豊富であり、Settext()メソッドで直接書き込むには乱雑すぎます。したがって、HTMLはファイルとして個別に管理し、ツールを使用してsetText()のパラメーターとしてコンテンツを文字列に変換する必要があります。以下は、例としてフリーマーカーテンプレートエンジンです
プロジェクトSRC/Main/Resourcesディレクトリに新しいテンプレートディレクトリを作成し、test.ftlファイルを配置すると、コンテンツは次のとおりです。
<html> <head> </head> <body> <p> Freemarkerテンプレートをテスト、welcome $ {username} </p> <img src = "cid:image"/> </body> </html>次に、FreemarkerとSpringが提供するツールを使用してコンテンツを文字列に変換します。これはもちろん、新しい瓶に依存する必要があります
<Dependency> GroupId> org.freemarker </groupId> <artifactid> freemarker </artifactid> <バージョン> 2.3.23 </version> </dependency>
新しいfreemarkerparser.javaを作成します
パッケージcom.xmyself.mail; java.util.map; Import org.springframework.ui.freemarker.freemarkertemplateutils; import freemarker.template.configuration; import freemarker.template.template; public class freemarkerparser {public string tohtmlstring(string name、map <string、string> data){@suppresswarnings( "deprecation")configuration config = new Configuration(); config.setclassfortemplateloading(this.getClass()、 "/templates/"); try {template template = config.getTemplate(name); freeMarkertemplateutils.processTemplateIntoString(テンプレート、データ)を返します。 } catch(Exception e){e.printstacktrace(); } "fail"を返します。 }}テンプレート内の$ {}コンテンツをマップの値に置き換え、テンプレートファイルを文字列に変換します
注:プロセス中のテンプレートパスの構成と読み取りは面倒であり、この方法で一時的に処理されます。
メールを送信するコードには、非常に小さな変更のみが必要です
map <string、string> data = new hashmap <string、string>(); data.put( "username"、 "chengyi"); string text = new freemarkerparser()。tohtmlstring( "test.ftl"、data); helper.settext(text、true); filesystemresource image = new filesystemResource(new file( "d:/test.jpg")); helper.addinline( "image"、image);
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。