2. MIMEの取扱
JavaMail 2章 MIMEの取扱
- 2.1. HTMLメールを送る
- 2.2. 画像ファイルを送る
- 2.3. メールにファイルを添付する
2.1. HTMLメールを送る
昔のメールでは、1文字7ビット(ASCII文字)のテキストデータしか送ることができず、また送ることのできるデータ量にも制限がありました。これをどのようなデータでも送信できるように改良し、データ量の制限も無くしたものが MIME (Multi-purpose Internet Mail Extensions encoding) です。元来は日本語のテキストも送ることができなかったのですが、 MIME のお陰で送信できるようになりました。この節では JavaMail で MIME メールを送信する方法について説明します。まず始めに、 Plain テキスト以外のデータを送る方法について説明します。
メールを送信する際、送信するテキストデータを以下のように setText メソッドで設定していました。
MimeMessage mimeMessage=new MimeMessage(session); ... mimeMessage.setText(new Date().toString());
Plain テキスト以外のデータを送信する場合には、setText 以外のメソッドを使用してデータを設定します。Plain テキスト以外のテキストデータの場合には、「setContent」メソッドを使用します。HTMLメールを送る場合には以下のようにします。
MimeMessage mimeMessage=new MimeMessage(session); ... String html="<html><body><h1>Hello</h1>How are you today?</body></html>"; mimeMessage.setContent(html, "text/html"); // HTMLの指定
setContentメソッドの定義は以下の通りです。第1引数に送信データ、第2引数に送信データのMIMEタイプを設定します。
void setContent(Object obj, String type) throws javax.mail.MessagingException
例では送信データとしてHTMLテキスト、MIMEタイプとして「text/html」を指定しています。もし日本語データを含むHTMLテキストを送信したい場合には、text/html の「charset」属性で文字コードを指定します。以下のようになります。
String html="<html><body><h1>こんにちは</h1>お元気ですか?</body></html>"; mimeMessage.setContent(html, "text/html; charset=iso-2022-jp"); // 日本語を含むHTMLの指定
(実習課題1)
以下のコンソールアプリケーションを作成しなさい。
- 指定したアドレスに対して、HTMLメールを送信する。
- 宛先アドレスは1つ目のプログラム引数で指定する。
- 本文となるHTMLの内容は、2つ目のプログラム引数で指定されたファイルから読み込まれる。
- タイトルの内容は任意。