JavaサーブレットでのGmail送信プログラム
Javaサーブレットでメールを送信したいと思い、こちら(http://www.utilz.jp/wiki/JavaMail1)のサイトで公開されているソースコードを利用してプログラムを作成したのですがエラーが発生してしまいました。
公開されているプログラムだけで実行した際には動いたので動作環境に問題は無いと思います。
public class send_Gmail extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, MessagingException
{
send(
"*********", // gmail アカウント
"*********", // gmail パスワード
"*********", // 送信先
"subject", // サブジェクト
"body"); // 本文
// コンテンツタイプの設定
response.setContentType("text/html;charset=Windows-31J");
// 出力のためのPrintWriterオブジェクトを取得
PrintWriter out = response.getWriter();
// 一連のコンテンツを出力
out.println("<html><head>");
out.println("<title>スクリプトレット</title>");
out.println("</head><body>");
out.println("メールを送信しました<br />");
out.println("</body></html>");
}
private static final Properties PROP;
static {
PROP = new Properties();
PROP.put("mail.smtp.host", "smtp.gmail.com");
PROP.put("mail.smtp.port", "587");
PROP.put("mail.smtp.auth", "true");
PROP.put("mail.smtp.starttls.enable", "true");
}
public void send(
String user,
String password,
String to,
String subject,
String body) throws MessagingException {
Transport transport = null;
try {
Session sess = Session.getInstance(PROP);
MimeMessage mm = new MimeMessage(sess);
mm.setFrom(new InternetAddress(user));
mm.setSubject(subject);
mm.setRecipient(
Message.RecipientType.TO, new InternetAddress(to));
mm.setContent(body, "text/plain; charset=iso-2022-jp");
mm.setHeader("Content-Transfer-Encoding", "7bit");
transport = sess.getTransport("smtp");
transport.connect(user, password);
transport.sendMessage(mm, mm.getAllRecipients());
}
finally {
if (transport != null) {
transport.close();
}
}
}
コンパイルすると
send_Gmail.java:28: Gmail_test.send_Gmail のdoPost(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) は javax.servlet.http.HttpServlet の doPost(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) をオーバーライドできません。オーバーライドされたメソッドは javax.mail.MessagingException をスローしません。
protected void doPost(HttpServletRequest request, HttpServletResponse response)
というエラーが出てしまいます。throwsにMessagingExceptionを記述しないと、今度は記述しろというエラーが出てしまい困っています…解決策を教えて下さい。よろしくお願いします。
お礼
MarrowGさん、こんにちは。詳しいご回答有難うございました。 ようやくサーブレットのライフサイクルについて、少しずつ分かってきました。 Webアプリケーションサーバがやはり関わりを持ってくるのですね。 後はWebアプリケーションサーバのマニュアル等を読んで、学習を進めていきたいと思います。 ご回答嬉しかったです。改めて有難うございました。