修正後のサンプルプログラム

広告

今までのページでメール送信に関数最低限の仕組みはご説明しました。一部修正を加えた方がいい箇所もあるので、下記に修正後のサンプルを載せておきます。日本語対応にし、Toに複数のアドレスを指定できるようにしています。

import java.util.*;
import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public class msgsendsample{
  static String msgText = "This is a message body.¥nHere's the second line.";

  public static void main(String[] args){
    if (args.length != 4){
      usage();
      System.exit(1);
    }

    System.out.println();

    String to = args[0];
    String from = args[1];
    String host = args[2];
    boolean debug = Boolean.valueOf(args[3]).booleanValue();

    Properties props = new Properties();
    props.put("mail.smtp.host", host);
    props.put("mail.host", host);
    props.put("mail.from", from);
    if (debug){
      props.put("mail.debug", args[3]);
    }

    Session session = Session.getInstance(props);
    session.setDebug(debug);
    
    try{
      MimeMessage msg = new MimeMessage(session);
      msg.setFrom(new InternetAddress(from));
      InternetAddress[] address = InternetAddress.parse(args[0]);
      msg.setRecipients(Message.RecipientType.TO, address);
      msg.setSubject("JavaMail APIs Test", "ISO-2022-JP");
      msg.setSentDate(new Date());

      msg.setText(msgText, "ISO-2022-JP");

      Transport.send(msg);
    }catch(MessagingException mex){
      System.out.println("¥n--Exception handling in msgsendsample.java");
      mex.printStackTrace();
    }
  }

  private static void usage(){
    System.out.println("usage: java msgsendsample <to> <from> <smtp> true|false");
  }
}

( Written by Tatsuo Ikura )