JavaMail 1章 メールの送信
- 1.1. JavaMail API
- 1.2. javax.mail.Session
- 1.3. メールの送信
1.3. メールの送信
メールを送信するためには、session を利用して javax.mail.internet.MimeMessage オブジェクトを作成します。MimeMessage オブジェクトに送信先・メール内容を設定し、最後に javax.mail.Transport を用いてメールを送信します。
以下はメールの送信を行うプログラムです。プログラム引数で指定されたメールアドレスに対して、現在の時刻をメールで送信します。
import java.util.Properties;
import java.util.Date;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.MessagingException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.AddressException;
public class MailSend{ public static void main(String[] args){
Properties properties=new Properties();
properties.setProperty("mail.smtp.host", "localhost");
Session session=Session.getDefaultInstance(properties);
MimeMessage mimeMessage=new MimeMessage(session);
// InternetAddressの作成
InternetAddress[] toAddress=new InternetAddress[args.length];
try{
for(int i=0; i<args.length; i++){
toAddress[i]=new InternetAddress(args[i]);
}
}catch(AddressException e){
e.printStackTrace();
return;
}
try{
// 宛先の設定
mimeMessage.setRecipients(MimeMessage.RecipientType.TO, toAddress);
// 送信元の設定
mimeMessage.setFrom(new InternetAddress("[email protected]"));
// サブジェクトの設定
mimeMessage.setSubject("The time is ...");
// 本文の設定
mimeMessage.setText(new Date().toString());
// 設定の保存
mimeMessage.saveChanges();
// メールの送信
Transport.send(mimeMessage);
}catch(MessagingException e){
e.printStackTrace();
return;
}
}
}
メールを送信するためには、Session オブジェクトを用いて MimeMessage オブジェクトを作成します。MimeMessage オブジェクトが作成できると、それのメソッドを用いてメールの内容を設定していきます。以下はサンプルで使用しているメソッドの定義です。メールアドレスの指定には javax.mail.internet.InternetAddress を使用します。
メールの送信相手を指定します。第1引数で、「TO」「CC」「BCC」のいずれを指定するか、第2引数で送信相手のアドレスを指定します。
void setRecipeintType(javax.mail.Message.RecipientType type,
javax.mail.Address[] address)
throws javax.mail.MessagingException
メールの From アドレスを指定します。
void setFrom(javax.mail.Address address) throws javax.mail.MessagingException
メールの Subject を指定します。
void setSubject(String subject) throws javax.mail.MessagingException
メールの本文を指定します。
void setText(String text) throws javax.mail.MessagingException
もし Subject および本文に日本語を指定したい場合には、引数を2つ取るメソッドを使用します。第2引数には文字コードを指定します。日本語の場合、メールは JIS コードですので、「ISO-2022-JP」を指定します。例えば以下のようになります。
mimeMessage.setSubject("現在の時刻は...", "iso-2022-jp");
mimeMessage.setText(new Date()+" です。", "iso-2022-jp");
メールに必要な情報を設定した後、javax.mail.Transport の send メソッドを用いてメールを送信します。例では送信前に設定した情報を保存する saveChanges メソッドを呼び出していますが、メール作成後、すぐに送信する場合は省略しても構いません。メールサーバに正しくメールを渡せると、例外を発生せずに処理は終了します。
(実習課題1)
サンプルのプログラムを作成し、実行しなさい。また以下の点で改良を行いなさい。
- 引数で指定した1つ目のアドレスは TO 、2つ目以降は CC とする。
- サブジェクトおよび本文に日本語を指定する。

