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 %>" /> |