チェックするのは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 件のコメント:
コメントを投稿