Google Code が利用できる言語: English - Español - 日本語 - 한국어 - Português - Pусский - 中文(简体) - 中文(繁體)
メール サービスの Java API は、メールのメッセージ送信に JavaMail(javax.mail)インターフェースを使用します。
詳細については、Sun の JavaMail API リファレンスをご覧ください。
メール メッセージを送信するために、アプリケーションは MimeMessage オブジェクトを準備し、Transport クラスの静的メソッド send() を使用し送信します。このメッセージは、JavaMail の Session オブジェクトを使用して作成されます。Session および Transport は追加の設定なしで App Engine のメール サービスで稼働します。
import java.util.Properties;
import javax.mail.AddressException;
import javax.mail.InternetAddress;
import javax.mail.MessagingException;
import javax.mail.MimeMessage;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
// ...
Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null);
String msgBody = "...";
try {
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress("admin@example.com"));
msg.addRecipient(Message.RecipientType.TO,
new InternetAddress("user@example.com"));
msg.setSubject("Your Example.com account has been activated");
msg.setText(msgBody);
Transport.send(msg);
} catch (AddressException e) {
// ...
} catch (MessagingException e) {
// ...
}
メール サービスへのコールは非同期であり、直ちに戻ります。メール サービスは、受信者のメール サーバーにアクセスしメッセージを配信する一連のプロセスを実行します。受信者へのメッセージ送信で問題が発生した場合、または受信者のメール サーバーが「バウンス メッセージ」を返した場合、エラー メッセージが送信者に送信されます。
送信者と受信者のメール アドレスは、JavaMail 内の InternetAddress クラスのインスタンスを使用して表されます。コンストラクタはメール アドレスを文字列として処理し、アドレスが有効なメール アドレスの条件を満たさない場合は AddressException を発生させます。
送信者のアドレスを設定するために、アプリケーションは MimeMessage オブジェクトに対して setFrom() メソッドをコールします。送信者はアプリケーションの登録デベロッパーまたは現在のリクエストを送信したユーザーの Google アカウントのアドレスでなければなりません。
MimeMessage オブジェクトのいくつかのメソッドが受信者を設定します。addRecipient() メソッドは受信者のタイプとアドレスを、そのタイプの受信者のリストに追加します。受信者タイプは Message.RecipientType.TO、Message.RecipientType.CC または Message.RecipientType.BCC のいずれかとなります。
setReplyTo() メソッドを使用し「返信先」アドレスを設定できます。
MimeMessage オブジェクトのメソッドをコールし、メッセージの内容を設定できます。setSubject() メソッドは件名を設定し、setText() メソッドは(プレーンテキストの)本文を設定します。
セキュリティ上の理由から、メール サービスは送信メール メッセージで不定ヘッダーを許可していません。メッセージの送信日など、ヘッダーによってはメール サービスによって上書きされるものもあります。送信メッセージに追加されたほかのヘッダーは削除されます。
マルチパート メッセージを使用すると、メッセージにファイルを添付したり、プレーンテキストの本文に HTML メッセージの本文をつけたりすることができます。個々のパートを保存するために MimeMultipart オブジェクトを作成し、添付ファイルまたは代替メッセージの本文のそれぞれに MimeBodyPart オブジェクトを作成し、コンテナに追加します。最後に、コンテナを MimeMessage の本文に割り当てます。
import javax.mail.MimeBodyPart;
import javax.mail.MimeMultipart;
import javax.mail.Multipart;
import javax.activation.DataHandler;
// ...
String htmlBody; // ...
byte[] attachmentData; // ...
Multipart mp = new MimeMultipart();
MimeBodyPart htmlPart = new MimeBodyPart();
htmlPart.setContent(htmlBody, "text/html");
mp.addBodyPart(htmlPart);
MimeBodyPart attachment = new MimeBodyPart();
attachment.setFileName("manual.pdf");
attachment.setContent(attachmentData, "application/pdf");
mp.addBodyPart(attachment);
message.setContent(mp);
セキュリティ上の理由から、メッセージのパーツと添付ファイルは許可されたいくつかのタイプのいずれかである必要があります。添付ファイルの名前の最後には、そのタイプとして認識されるファイル名の拡張子が付けられていなければなりません。使用できるファイル形式とファイル名の拡張子については、概要: 添付ファイルをご覧ください。
アプリケーションはメール メッセージを受信できません。
アプリケーションは JavaMail インターフェースを使用して他のメール サービスに接続し、メール メッセージの送受信を実行できません。Transport または Session に追加された SMTP 設定は無視されます。
低レベルのメール サービス API のすべての機能は JavaMail インターフェースに含まれています。
低レベル API には、アプリケーションのすべての管理者にメールを送信するための便利なメソッドが含まれています。JavaMail でこの機能を実行するには、admin@.(「admin」、アットマーク、ピリオド)を受信者として指定します。