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 とする。
- サブジェクトおよび本文に日本語を指定する。