package ushi.util; import java.util.*; import javax.mail.*; import javax.mail.internet.*; /** * MailSender * JavaMail APIを使って、SMTP経由のメール送信を行います。 * * @date 2002/01/21 */ public class MailSender { /** send()が返す記号定数で、送信成功を表します。*/ public static final int SEND_OK = 0; /** send()が返す記号定数で、From:のエラーです。*/ public static final int SEND_ERROR_FROM = 1; /** send()が返す記号定数で、To:のエラーです。*/ public static final int SEND_ERROR_TO = 2; /** send()が返す記号定数で、Subject:のエラーです。*/ public static final int SEND_ERROR_SUBJECT = 3; /** send()が返す記号定数で、本文のエラーです。*/ public static final int SEND_ERROR_MESSAGE = 4; /** send()が返す記号定数で、送信失敗を表します。*/ public static final int SEND_ERROR_SENDING = 5; public static final int SEND_ERROR_MISSING_HOST = 11; public static final int SEND_ERROR_MISSING_FROM = 12; public static final int SEND_ERROR_MISSING_TO = 13; public static final int SEND_ERROR_MISSING_MESSAGE = 14; /** SMTPメールサーバー */ protected String hostName = null; /** ポート番号 */ protected int port = 25; /** From: */ protected String from = null; /** To: */ protected String[] tos = null; /** Subject: */ protected String subject = null; /** メールの本文 */ protected String message = null; /** コンストラクタ */ public MailSender(){ } /** * デフォルトの値をいくつかセットするコンストラクタ。 * ポート番号25,宛先が1アドレスだけのメールの場合に便利な * コンストラクタです。 */ public MailSender(String hostName, String from, String to, String subject, String message){ setHostName(hostName); setFrom(from); setTo(to); setSubject(subject); setMessage(message); } public final void setHostName(String v){ hostName = v; } public final void setPort(int v){ port = v; } public final void setFrom(String v){ from = v; } public final void setTo(String v){ tos = new String[1]; tos[0] = v; } public final void setTos(String[] v){ tos = v; } public final void setSubject(String v){ subject = v; } public final void setMessage(String v){ message = v; } /** * メールを送信します。結果を戻り値(記号定数)で返します。 */ public int send(){ String charset = "iso-2022-jp"; // 必須項目nullチェック if(hostName == null) return SEND_ERROR_MISSING_HOST; if(from == null) return SEND_ERROR_MISSING_FROM; if(tos == null) return SEND_ERROR_MISSING_TO; if(message == null) return SEND_ERROR_MISSING_MESSAGE; // まずSMTPサーバを設定してメール送信を初期化します。 Properties props = new Properties(); props.put("mail.smtp.host", hostName); props.put("mail.smtp.port", String.valueOf(port)); Session sess = Session.getDefaultInstance(props, null); // メール文書に送信元(from)、送信先(to)の設定をする MimeMessage msg = new MimeMessage(sess); try { msg.setFrom(new InternetAddress(from)); } catch(Exception e){ e.printStackTrace(); return SEND_ERROR_FROM; } try { InternetAddress[] toAddress = new InternetAddress[tos.length]; for(int i=0; i