JSP を使用して電子メールを送信するのは非常に簡単ですが、JavaMail API と JavaBean Activation Framework がインストールされている必要があります。
JavaMail の最新バージョンをここからダウンロードします。
JavaBeans Activation Framework (JAF) の最新バージョンをここからダウンロードします。
これらのファイルをダウンロードして解凍すると、ルート ディレクトリに一連の jar パッケージが表示されます。 mail.jar パッケージと activity.jar パッケージを CLASSPATH 変数に追加します。
この例では、マシンから簡単な電子メールを送信する方法を示します。 localhost がネットワークに接続されており、電子メールを送信できることを前提としています。同時に、CLASSPATH変数にmail.jarパッケージとactivation.jarパッケージが追加されていることを再度確認してください。
<%@ page import="java.io.*,java.util.*,javax.mail.*"%><%@ page import="javax.mail.internet.*,javax.activation.*"%> <%@ page import="javax.servlet.http.*,javax.servlet.*" %><% String result; // 受信者の電子メール文字列 to = "[email protected]" // 送信者の電子メール文字列の送信元= "[email protected]"; // ローカル ホストから電子メールを送信すると仮定します。 String host = "localhost"; // システム プロパティ オブジェクトを取得します。 Properties = System.getProperties(); // メール サーバーを設定します。 ( "mail.smtp.host", host); // デフォルトのセッション オブジェクトを取得します。 Session mailSession = Session.getDefaultInstance(properties); // デフォルトの MimeMessage オブジェクトを作成します。 MimeMessage message = new MimeMessage(mailSession); // From: ヘッダーのヘッダー フィールドを設定します message.setFrom(new InternetAddress(from)); // To: ヘッダーのヘッダー フィールドを設定します message.addRecipient(Message.RecipientType. TO, new InternetAddress(to)); // 件名を設定します: ヘッダー フィールド message.setSubject("これが件名です!");実際のメッセージを設定します message.setText("これは実際のメッセージです"); // メッセージを送信します Transport.send(message); result = "メッセージを正常に送信しました..." }catch (MessagingException mex) { mex.printStackTrace (); result = "エラー: メッセージを送信できません...." } %><html><head><title>を使用して電子メールを送信しますJSP</title></head><body><center><h1>JSP を使用して電子メールを送信</h1></center><p align="center"><% out.println("Result: " + result + "n"); %></p></body></html>
ここで http://localhost:8080/SendEmail.jsp にアクセスすると、[email protected] に電子メールが送信され、次の結果が表示されます。
JSPResult を使用して電子メールを送信: メッセージが正常に送信されました....複数の人に電子メールを送信する場合は、以下に示す方法を使用して複数の電子メール アドレスを指定できます。
void addRecipients(Message.RecipientType type, Address[] アドレス)throws MessagingExceptionパラメータは次のように説明されます。
type: この値は TO、CC、または BCC に設定されます。 CC はコピー、BCC はブラック コピーを表し、サンプル プログラムでは TO が使用されています。
アドレス: これは電子メール アドレスの配列です。電子メール アドレスを指定する場合は、InternetAddress() メソッドを使用する必要があります。
この例では、単純な HTML 電子メールを送信します。ローカルホストがネットワークに接続されており、メールを送信できることを前提としています。同時に、CLASSPATH変数にmail.jarパッケージとactivation.jarパッケージが追加されていることを再度確認してください。
この例は前の例とよく似ていますが、この例では setContent() メソッドを使用し、2 番目のパラメーターとして「text/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; // 受信者の電子メール文字列 to = "[email protected]" // 送信者の電子メール文字列の送信元= "[email protected]"; // ローカル ホストから電子メールを送信すると仮定します。 String host = "localhost"; // システム プロパティ オブジェクトを取得します。 Properties = System.getProperties(); // メール サーバーを設定します。 ( "mail.smtp.host", host); // デフォルトのセッション オブジェクトを取得します。 Session mailSession = Session.getDefaultInstance(properties); // デフォルトの MimeMessage オブジェクトを作成します。 MimeMessage message = new MimeMessage(mailSession); // From: ヘッダーのヘッダー フィールドを設定します message.setFrom(new InternetAddress(from)); // To: ヘッダーのヘッダー フィールドを設定します message.addRecipient(Message.RecipientType. TO, new InternetAddress(to)); // 件名を設定します: ヘッダー フィールド message.setSubject("これが件名です!"); HTML メッセージを設定します message.setContent("<h1>これは実際のメッセージです</h1>","text/html" ); // メッセージを送信 Transport.send(message); result = "メッセージを正常に送信しました..." ; }catch (MessagingException mex) { mex.printStackTrace(); result = "エラー: メッセージを送信できません...." }%><html><head><title>を使用して HTML 電子メールを送信しますJSP</title></head><body><center><h1>JSP を使用して電子メールを送信</h1></center><p align="center"><% out.println("Result: " + result + "n"); %></p></body></html>
ここで、上記の JSP ファイルを使用して 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; // 受信者の電子メール文字列 to = "[email protected]" // 送信者の電子メール文字列の送信元= "[email protected]"; // ローカル ホストから電子メールを送信すると仮定します。 String host = "localhost"; // システム プロパティ オブジェクトを取得します。 Properties = System.getProperties(); // メール サーバーを設定します。 ( "mail.smtp.host", host); // デフォルトのセッション オブジェクトを取得します。 Session mailSession = Session.getDefaultInstance(properties); // デフォルトの 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!") // メッセージ部分 BodyPart を作成します。 messageBodyPart = new MimeBodyPart(); // メッセージを入力します messageBodyPart.setText("This is message body") // マルチメディア メッセージを作成します Multipart = new MimeMultipart(); // テキスト メッセージ パーツを設定しますmessageBodyPart); // 添付ファイルの部分 messageBodyPart = new MimeBodyPart(); String filename = "file.txt"; new FileDataSource(filename); messageBodyPart.setDataHandler(new DataHandler(source)); multipart.addBodyPart(messageBodyPart); // メッセージを送信します.send (メッセージ); 文字列タイトル = "メールを送信"; }catch (MessagingException mex) { mex.printStackTrace(); result = "エラー: メッセージを送信できません...." } %><html><head><title>JSP を使用して添付ファイルの電子メールを送信します。 ><body><center><h1>JSP を使用して添付メールを送信する</h1></center><p align="center"><% out.println("Result: " + result + "n"); %></p></body></html>
メールサーバーがユーザー認証にユーザー名とパスワードを必要とする場合は、次のように設定できます。
props.setProperty("mail.user", "myuser"); props.setProperty("mail.password", "mypwd");HTML フォームを使用して電子メールを受信し、リクエスト オブジェクトを通じてすべての電子メール情報を取得します。
String to = request.getParameter("to");String from = request.getParameter("from");String subject = request.getParameter("subject");String messageText = request.getParameter("body");上記の情報を取得したら、前述の例を使用して電子メールを送信できます。