■5章 5-3-4コンポーネント利用のサンプルプログラム

P.179 index.jsp
不具合は冒頭のpage importの部分とMimeMessageの位置ですが、行番号のずれが生じるので全文記載しました。

   1: <%-- メール送信コントローラ --%>
   2: <%@ page
   3:     import="javax.mail.*, javax.mail.internet.*, java.util.*"
   4:     contentType="text/html; charset=euc-jp" %>
   5: <%
   6:     // メール用定数
   7:     String smtpHost = "localhost";
   8:     String from = "jsp2@gihyo.co.jp";
   9:
  10:     // メール送信準備
  11:     Properties smtpProperties = new Properties();
  12:     smtpProperties.put("mail.smtp.host", smtpHost);
  13:     Session smtpSession = Session.getDefaultInstance(smtpProperties, null);
  14:
  15:     // コマンドの取得
  16:     String cmd = request.getParameter("cmd");
  17:
  18:     // コマンドに応じて処理・行き先を変える
  19:     String jspPage;
  20:     if ("send".equals(cmd)) {
  21:
  22:         // フォームからメールの内容を取得
  23:         String subject = request.getParameter("subject");
  24:         subject = new String(subject.getBytes("8859_1"), "EUC_JP");
  25:         String body = request.getParameter("body");
  26:         body = new String(body.getBytes("8859_1"), "EUC_JP");
  27:         String to = request.getParameter("to");
  28:
  29:         // メール本体の作成
  30:         try {
  31:             MimeMessage message = new MimeMessage(smtpSession);
  32:             message.setFrom(new InternetAddress(from));
  33:             InternetAddress[] toAddress = { new InternetAddress(to) };
  34:             message.setRecipients(Message.RecipientType.TO, toAddress);
  35:             message.setSubject(subject, "iso-2022-jp");
  36:             message.setText(body, "iso-2022-jp");
  37:         } catch (AddressException ae) {
  38:             // エラーthrow (TODO)
  39:         }
  40:
  41:         // メール送信
  42:         Transport.send(message);
  43:
  44:         // 結果表示
  45:         jspPage = "done.jsp";
  46:
  47:     // その他はフォーム表示
  48:     } else {
  49:
  50:         // フォーム表示
  51:         jspPage = "form.jsp";
  52:     }
  53: %>
  54:
  55: <%-- リクエストを転送 --%>
  56: <jsp:forward page="<%= jspPage %>" />
   1: <%-- メール送信コントローラ --%>
   2: <%@ page
   3:     import="
   4:         javax.mail.*,
   5:         javax.mail.internet.*,
   6:         java.util.*,
   7:         gihyo.jsp2.*"
   8:     contentType="text/html; charset=euc-jp" %>
   9: <%
  10:     // メール用定数
  11:     String smtpHost = "localhost";
  12:     String from = "jsp2@gihyo.co.jp";
  13:
  14:     // メール送信準備
  15:     Properties smtpProperties = new Properties();
  16:     smtpProperties.put("mail.smtp.host", smtpHost);
  17:     Session smtpSession = Session.getDefaultInstance(smtpProperties, null);
  18:     MimeMessage message = new MimeMessage(smtpSession);
  19:
  20:     // コマンドの取得
  21:     String cmd = request.getParameter("cmd");
  22:
  23:     // コマンドに応じて処理・行き先を変える
  24:     String jspPage;
  25:     if ("send".equals(cmd)) {
  26:
  27:         // フォームからメールの内容を取得
  28:         String subject = request.getParameter("subject");
  29:         subject = new String(subject.getBytes("8859_1"), "EUC_JP");
  30:         String body = request.getParameter("body");
  31:         body = new String(body.getBytes("8859_1"), "EUC_JP");
  32:         String to = request.getParameter("to");
  33:
  34:         // 結果表示用Bean
  35:         MailBean bean = new MailBean();
  36:         bean.setTo(to);
  37:         bean.setSubject(subject);
  38:         bean.setBody(body);
  39:         request.setAttribute("mail", bean);
  40:
  41:         // メール本体の作成
  42:         try {
  43:             message.setFrom(new InternetAddress(from));
  44:             InternetAddress[] toAddress = { new InternetAddress(to) };
  45:             message.setRecipients(Message.RecipientType.TO, toAddress);
  46:             message.setSubject(subject, "iso-2022-jp");
  47:             message.setText(body, "iso-2022-jp");
  48:         } catch (AddressException ae) {
  49:             // エラーthrow (TODO)
  50:         }
  51:
  52:         // メール送信
  53:         Transport.send(message);
  54:
  55:         // 結果表示
  56:         jspPage = "done.jsp";
  57:
  58:     // その他はフォーム表示
  59:     } else {
  60:
  61:         // フォーム表示
  62:         jspPage = "form.jsp";
  63:     }
  64: %>
  65:
  66: <%-- リクエストを転送 --%>
  67 <jsp:forward page="<%= jspPage %>" />

この画面を閉じる