JSPでメールを送信する
著者:Eve Cole
更新時間:2009-07-02 17:13:09
JSPでメールを送信する
1. Sun 仕様の sun.net.smtp パッケージをサポートする任意の JSP エンジン (JSWDK など) を介してメールを送信できます。
(警告: 組み込みの内部 Sun 仕様パッケージを使用してください。これは、JSP プログラムの移植性に影響します。)
次のスクリプトレットは、SmtpClient クラスを使用して、JSP ファイルで電子メールを送信します。
2. JavaMail は公式の Java メール API です。http://java.sun.com/products/javamail/ を参照してください。 API は sun.net.smtp.SmtpClient よりも豊富または複雑ですが、移植可能です。ここでは、JavaMail API を含む MailSender クラスが再作成されます。以下に示すように:
// ms_ プレフィックスは MailSender クラス変数用です
// str プレフィックスは文字列用です
// astr プレフィックスは文字列の配列用です
// strbuf プレフィックスは StringBuffers などに使用されます。
public MailSender(
String strFrom, // 送信者
String[] astrTo, // 受信者
String[] astrBCC, // BCC 受信者、オプション
String strSubject, // 件名
ブール値デバッグ)
{
ms_strFrom = strFrom; // メッセージの送信者。
ms_astrTo = astrTo // メッセージの宛先 (複数形)
ms_debugging = debugging; // メッセージの宛先 (複数形)
// ホストを設定します
プロパティ props = new Properties();
props.put("mail.smtp.host", ms_strSMTPHost);
// いくつかのプロパティを作成し、デフォルトのセッションを取得します
セッションセッション = Session.getDefaultInstance(props, null);
session.setDebug(ms_debugging);
試す {
//メッセージを作成する
ms_msg = 新しい MimeMessage(セッション);
// からを設定します
からのインターネットアドレス = 新しいインターネットアドレス(strFrom);
ms_msg.setFrom(から);
// に設定します
InternetAddress[] アドレス = 新しい InternetAddress[astrTo.length];
for (int i = 0; i astrTo.length; ++i)
{
アドレス[i] = 新しいインターネットアドレス(astrTo[i]);
}
ms_msg.setRecipients(Message.RecipientType.TO, アドレス);
// BCC 受信者を設定します
if (astrBCC != null)
{
アドレス = 新しいインターネットアドレス[astrBCC.length];
for (int i = 0; i astrBCC.length; ++i)
{
eh.dbg("astrBCC[" + i + "] は: '" + astBCC[i] + "'");
アドレス[i] = 新しいインターネットアドレス(astrBCC[i]);
}
ms_msg.setRecipients(Message.RecipientType.BCC, アドレス);
}
// 件名を設定します
ms_msg.setSubject(strSubject);
// メッセージを保持する文字列バッファを設定します
ms_strbufMsg = 新しい StringBuffer();
} catch (MessagingException mex) {
mex.printStackTrace(System.err);
} catch (例外例) {
ex.printStackTrace(System.err);
}
}
public void ms_add(String strText)
{
ms_strbufMsg.append(strText);
}
パブリック void ms_send()
{
試す {
// コンテンツをプレーンテキストとして設定します
ms_msg.setContent(new String(ms_strbufMsg), "text/plain");
//そして離れて
Transport.send(ms_msg);
} catch (例外例) {
System.out.println("MailSender.ms_send で例外をキャッチしました: " + ex);
}
}