SAK 図書館
JAVA Servlet、JSP 基礎編11 - SMTP メール送信、javax.mail、MimeMessage
■SMTP メール送信
mail.jar、activation.jar を使用して、メール送信を行ってみた。
例の S-JIS の扱いが変わったため、MS932 では ? になるコードはないのだが、
メールサーバによっては MS932 ではうまく表示できない。
よって、メールは iso-2022-jp を使うしかない。
この場合、「−」、「〜」などが ? になってしまう。
replace で半角コードに置き換える手しかないように思う。
/*
========================================================================
メール送信
========================================================================
*/
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import java.util.Properties;
import java.util.Date;
import javax.mail.Session;
import javax.mail.Message;
import javax.mail.Transport;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.InternetAddress;
public class sndmail extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
String msg = "メール送信しました。";
String text = "";
// フォームデータ取得
Enumeration names = request.getParameterNames();
while (names.hasMoreElements()) {
String name = (String)names.nextElement();
text += "■" + name + ":\n" + request.getParameter(name) + "\n";
}
// メール送信
try {
Properties pt = System.getProperties();
// SMTP サーバーアドレス
pt.put("mail.smtp.host", "sak-design");
// メール準備
Session session = Session.getDefaultInstance(pt, null);
MimeMessage ml = new MimeMessage(session);
// 送信元
ml.setFrom(new InternetAddress("sak@sak-design", "SAK", "iso-2022-jp"));
// 送信先
ml.setRecipients(Message.RecipientType.TO, "sak@sak-design");
// 形式
ml.setHeader("Content-Type", "text/plain");
// タイトル
ml.setSubject("タイトル", "iso-2022-jp");
// 本文
text = text.replace('@', '1');
text = text.replace('A', '2');
text = text.replace('B', '3');
text = text.replace('C', '4');
text = text.replace('D', '5');
text = text.replace('E', '6');
text = text.replace('F', '7');
text = text.replace('G', '8');
text = text.replace('H', '9');
text = text.replace('〜', '-');
text = text.replace('−', '-');
ml.setText(text, "iso-2022-jp");
// 送信日
ml.setSentDate(new Date());
// 送信
Transport.send(ml);
} catch (Exception e) {
msg = "メール送信エラー<BR>" + e.toString();
}
// 送信結果表示
response.setContentType("text/html; charset=MS932");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\">");
out.println("<HTML>");
out.println("<HEAD>");
out.println("<META http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">");
out.println("<TITLE>メール送信</TITLE>");
out.println("</HEAD>");
out.println("<BODY>");
out.println("<P>" + msg + "</P>");
out.println("</BODY>");
out.println("</HTML>");
}
}
■JAVA Servlet、JSP 基礎編資料
■JAVA Servlet、JSP + PostgreSQL 編資料
■JAVA Servlet、JSP + Oracle9i 編資料
■PostgreSQL 編、JAVA Servlet、JSP 編資料
■MySQL 編資料
■SQL 基礎編資料
■SQL 基礎実地編資料
■SQL チューニング編資料
■Oracle PL/SQL 編資料