チェックするのは2つ。
・本文の有無
何度か試してみたところ、本文が空だとメール送信できない様子(要検証)
なので本文が入力されているかどうかを調べる。
(このコードでは0か1かの簡単なチェックしかしていない)
・宛先アドレス
今回は個人的な事情で、宛先メールアドレスを指定できる機能が必要だった。
フォームの「宛先メールアドレス」にアドレスが入力されていればそのアドレスへ、
未入力なら本来の宛先である自分のGmailアドレスへメールを送信する。
(ここでも単純なチェックしかしていないが)
[プログラム]
package send; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class SendMail extends HttpServlet{ public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{ // 文字コード指定 request.setCharacterEncoding("UTF-8"); response.setContentType("text/html; charset=UTF-8"); PrintWriter out = response.getWriter(); // メール内容設定 String subject = request.getParameter("subject"); // 件名取得 String body = request.getParameter("body"); // 本文取得 String address = ""; // 本文入力チェック if (body.equals("")) { out.print("本文が入力されていません。"); }else { // 宛先アドレス設定 address = request.getParameter("address"); // 宛先アドレス入力チェック if (address.equals("")) { address = "xxxxxxx@gmail.com"; } // メール発射用意!! SES ses = new SES(); // 実行して結果メッセージ出力 out.print(ses.send(subject,body,address)); } } }
またコード眺めてて思ったんだけど、メールの文字コードってISO-2022-JPじゃなかったっけ・・・
何も考えずUTF-8にしたが・・・まぁSESが直接メール送信するわけじゃないし、いいのかな(?)
いいか。メールの内容はちゃんと送れてるし。
プログラムをweb.xmlでマッピングする。
SendMail send.SendMail SendMail /SendMail
Syntax Highlighter使うとDOCTYPEが表示されないのかしら
このページのソースの1143行目を見ればわかると思うがこのxmlコードにはDOCTYPEの指定があります。
とりあえず、ここまで出来たらEclipseでTomcatプラグインを使って動作テストをしてみましょう。
正常にメールが送信されているのを確認したら、
Amazon Web Serviceで仮想サーバ構築 No.5にメモした方法でFTP通信をして、
TomcatのWebappsフォルダ直下(/opt/tomcat7/webapps/)にプロジェクトを配置する。
その後Amazon Web Serviceで仮想サーバ構築 No.4にメモした方法でTomcatを再起動
またはブラウザでTomcatのManagerにアクセスしてプロジェクトを起動する。
これで問い合わせフォーム完成!
ちなみにフォームのURLは「http://xxx.xxx.xxx.xxx:8080/SendMail/html/form.html」である。
Tomcatをポート番号デフォルトで使用している場合、アクセスするポートは8080番となる。
AWS-EC2インスタンスにアクセスする場合はSecurity Groupで8080を許可する必要があるので注意。
そういえばこないだHackMeのLv3をクリアしたので
その攻略法も今度メモしておこうかな。
0 件のコメント:
コメントを投稿