tkxmailによるメール送信の方法(3)
HTMLメール送信

HTMLメールを送信する

前回までは、一斉送信やファイル添付メールの送信方法を解説しました。今回は、HTMLメールの送信について解説します。HTMLメールでも、一斉送信やファイル添付メールを送信できます。

HTMLメールの送信

一般のウェブと違って、メール本文をHTMLにする場合は、HTMLやCSSの使い方について、いくつかの制約があります。

  • レイアウトはテーブルレイアウトに限る(CSSレイアウトは不可)
  • CSSをファイルから読み込むことはできない
  • 画像ソースは、http://~ という絶対リンクで表す

作成したHTMLファイルを読み出し、これまでの「本文」にあたる body パラメータとして渡してやればOKです。ここでは、HTMLファイルを読み込んで文字列データとして返すユーティリティメソッドを使って、処理を簡単にします。
例として、つぎのようなHTMLファイルを作成しました。

<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>HTMLメール</title>
</head>
<body style="line-height:1.4em; font-size:12pt; 
    font-family:'ヒラギノ角ゴ Pro W3', 'メイリオ';">
  <h1 style="color:blue; font-size:18pt; ">はじめてのHTMLメール</h1>
  <table width="500" cellspacing="0" cellpadding="3px">
    <tbody>
    <tr>
      <td>
        <img src="http://k-webs.jp/images/tw.jpg"/>
      </td>
      <td valign="top">
        <p style="font-family:'ヒラギノ角ゴ Pro W3', 'メイリオ';">
          レイアウトはテーブルレイアウトに限る(CSSレイアウトは不可)。
          CSSをファイルから読み込むことはできない。画像ソースは、
          http://~ という絶対リンクで表す。
        </p>
      </td>
    </tr>
    <tr>
      <td colspan="2">
        <p style="font-family:'ヒラギノ角ゴ Pro W3', 'メイリオ'; 
          font-size:10pt;">
         作成したHTMLファイルを読み出し、これまでの「本文」にあたる body 
         パラメータとして渡してやればOKです。ここでは、HTMLファイルを読み
         込んで文字列データ として返すユーティリティメソッドを使って、処理
         を簡単にします。
       </p>
       </td>
     </tr>
   </tbody>
  </table>
</body>
</html>

HTMLメールを送信する処理は次のようです。

package mailsample_4;
import net.tkxtools.Mail;
public class MailSample_4 {
    private static final String smtpId = "***";
    private static final String smtpPassword = "***";
    private static final int port       = 587;
    private static final String host    = "***";
    
    private static String to      = "tanaka@gmail.com";
    private static String from    = "student@tk-webs.com";
    private static String subject = "送信テスト";
    private static String htmlFile
           = "D:\\D0_k-webs.jp.sakura\\JavaIndex_data\\index.html";

    public static void main(String[] args)  {
        Mail.sendHtml(smtpId, smtpPassword, host, port, to, from,
                                    subject, Mail.getText(htmlFile));
    }
}

※表示フォントの関係で、¥記号がバックスラッシュになっている点に注意してください。

htmlファイルのパス htmlFile を使って、Mail.getText(htmlFile) によってHTMLデータをよみこみ、body部のデータとして渡しています。

また、送信メソッドは、sendではなく、sendHtmlを使うことにも注意してください。

送信されたメールは次のようになります。

添付ファイルのあるHTMLメールを一斉送信する

HTMLメールでも、添付ファイルや一斉送信が可能です。コードは、一般のメールとほぼ同じスタイルになります。

package mailsample_5;
import java.util.ArrayList;
import java.util.List;
import net.tkxtools.Mail;
public class MailSample_5 {
    private static final String smtpId = "***";
    private static final String smtpPassword = "***";
    private static final int port       = 587;
    private static final String host    = "***";
    
    private static String to      = "tanaka@gmail.com, sato@yahoo.co.jp";
    private static String from    = "student@tk-webs.com";
    private static String subject = "送信テスト";
    private static String htmlFile
               = "D:\\D0_k-webs.jp.sakura\\JavaIndex_data\\index.html";
    
    private static String dir="w:\\files";          // 画像のあるフォルダ
    private static List<String> flist = new ArrayList<>();// ファイル名のリスト
    static {
        flist.add("4章JSFの基礎.pdf"); // 送信ファイル1
        flist.add("パソコン画像.jpg"); // 送信ファイル2
    }
    public static void main(String[] args)  {
        Mail.sendHtml(smtpId, smtpPassword, host, port, to, from, subject, 
                              Mail.getText(htmlFile), dir, flist, "BCC");
    }
}

ファイルのあるディレクトリとファイル名のリストを用意すれば、これまでと同じように添付ファイルを送信できます。また、一斉送信するには、単に、送信先を増やすだけです。なお、BCCの指定は任意です。

次のようなメールが送信されます。

その4へ

読者になる

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

%d人のブロガーが「いいね」をつけました。