プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

JSPを使ってHTML形式のメールを送信する方法【コード例で解説】

ここでは、自分のマシンからHTML形式のメールを送信する具体例を紹介します。この例では、localhostがインターネットに接続されており、メールを送信できる環境が整っていることを前提としています。また、JavaMail APIパッケージJAF(JavaBeans Activation Framework)パッケージに含まれるすべてのJARファイルが、CLASSPATHに設定されていることを必ず確認してください。

前回の例との違いは?

このサンプルは基本的にプレーンテキストメールを送る例とほぼ同じ構成ですが、決定的な違いが1つあります。それがsetContent()メソッドの使用です。第2引数に"text/html"を指定することで、メッセージ本文にHTMLコンテンツが含まれていることを明示的に伝えています。

この手法を使えば、必要なだけ大きなHTMLコンテンツを自由にメール本文として送信できます。テーブルや画像タグ、スタイル指定なども含めたリッチなメールを作成可能です。

サンプルコード

<%@ page import = "java.io.*,java.util.*,javax.mail.*"%>
<%@ page import = "javax.mail.internet.*,javax.activation.*"%>
<%@ page import = "javax.servlet.http.*,javax.servlet.*" %>
<%
    String result;

    // 宛先のメールアドレスを指定します
    String to = "abcd@gmail.com";

    // 送信元のメールアドレスを指定します
    String from = "mcmohd@gmail.com";

    // localhostからメールを送信する前提です
    String host = "localhost";

    // システムプロパティオブジェクトを取得します
    Properties properties = System.getProperties();

    // メールサーバーをセットアップします
    properties.setProperty("mail.smtp.host", host);

    // デフォルトのSessionオブジェクトを取得します
    Session mailSession = Session.getDefaultInstance(properties);

    try {
        // デフォルトのMimeMessageオブジェクトを作成します
        MimeMessage message = new MimeMessage(mailSession);

        // Fromヘッダーフィールドを設定します
        message.setFrom(new InternetAddress(from));

        // Toヘッダーフィールドを設定します
        message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));

        // 件名を設定します
        message.setSubject("This is the Subject Line!");

        // HTMLメッセージ本体を送信します(サイズは自由)
        message.setContent("<h1>This is actual message</h1>", "text/html" );

        // メッセージを送信します
        Transport.send(message);
        result = "Sent message successfully....";
    } catch (MessagingException mex) {
        mex.printStackTrace();
        result = "Error: unable to send message....";
    }
%>
<html>
    <head>
        <title>Send HTML Email using JSP</title>
    </head>
    <body>
        <center>
            <h1>Send Email using JSP</h1>
        </center>
      <p align = "center">
         <%
            out.println("Result: " + result + "\n");
         %>
      </p>
   </body>
</html>

実装時のポイント

実際に運用する際には、以下の点にも注意しましょう。

  • SMTPサーバーの認証: Gmailなどの外部SMTPサーバーを利用する場合は、mail.smtp.authtrueに設定し、認証情報を渡す必要があります。
  • 文字エンコーディング: 日本語のメールを送る場合は、setSubject()setContent()で「ISO-2022-JP」などの適切な文字コードを指定すると、文字化けを防げます。
  • 例外処理: MessagingExceptionだけでなく、ネットワークエラーなども考慮した堅牢なエラーハンドリングを心がけましょう。

このように、JSPとJavaMail APIを組み合わせれば、数行のコードでHTMLメール送信機能を実装できます。ニュースレターや通知メールなど、見栄えの良いメールを自動配信したい場合にぜひ活用してください。

  1. メールの送り方を徹底解説!Gmailで失敗しないための9つのステップとコツ

    メールを送りたいけれど、何から始めればいいのか分からない——そんな経験はありませんか?あるいは、すでにメールは送れるけれど、もっと質の高いメールを作りたいと考えている方もいるでしょう。この記事では、メール送信の基本から実践的なコツまで、順を追って詳しく解説します。「メールを送る」という行為自体はシンプルに思えますが、相手にきちんと伝わる良いメールを書くのは決して簡単ではありません。宛先と本文さえあれば十分だと考えがちですが、実際にはそれ以外にも押さえるべきポイントが数多くあります。ここでは、質の高いメールを送るための手順を紹介します。メールを送るために必要なものメールの送り方を説明する前に、事

  2. Excelで日付に基づいてメールを自動送信する3つの方法【VBAコード付き解説】

    この記事では、日付に基づいてExcelからメールを自動送信する最適な方法をご紹介します。通常、OutlookやGmailからメールを送るのは簡単ですが、特定の日時や日付に合わせてメールを送りたい場合には、Microsoft Excelを効果的に活用できます。サンプルデータにはいくつかのメールアドレスが含まれています(すべてダミーアドレスですが、admin@wsxdn.comのみ筆者自身のアドレスです)。動作確認のため筆者のアドレスを使用しています。日付に基づいてExcelからメールを自動送信する3つの方法方法1: Excel VBAを使って固定日付に基づきメールを自動送信するMicrosoft