ひとこと

― 今日のひとこと ―
印刷情報取得モジュールをアップロードしました。
https://bitbucket.org/marolabo/public
(2018.02.20)

2013年1月26日土曜日

Java ServletとAWS-SESでメール送信 No.3

フォームから送信された内容をチェックし、前回作ったプログラムを実行するサーブレットプログラムを作る。


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

コメントを投稿