サンプルプログラム

広告

では今までの説明を踏まえて、実際にファイル添付してメールを送信するサンプルプログラムを見てみます。

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

public class msgsendsample{
  static String msgText = "添付ファイルがあるメール送信サンプルです。";

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

    System.out.println();

    String to = args[0];
    String from = args[1];
    String host = args[2];
    String filename = args[3];
    boolean debug = Boolean.valueOf(args[4]).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[4]);
    }

    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());

      /* 添付ファイルの処理 */
      MimeBodyPart mbp1 = new MimeBodyPart();
      mbp1.setText(msgText, "ISO-2022-JP");

      MimeBodyPart mbp2 = new MimeBodyPart();
      FileDataSource fds = new FileDataSource(filename);
      mbp2.setDataHandler(new DataHandler(fds));
      mbp2.setFileName(MimeUtility.encodeWord(fds.getName()));

      Multipart mp = new MimeMultipart();
      mp.addBodyPart(mbp1);
      mp.addBodyPart(mbp2);

      msg.setContent(mp);

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

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

( Written by Tatsuo Ikura )