SAK 図書館

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

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 編資料
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索



Copyright (C) 1999-2017 Y.SAK