準備

JavaプログラムでGmailを使ってメールを送信プログラムを作ってみます。

Webサービスや、スマホアプリなど色々な場面で使えます。

プログラミングの行数はそれほどでもありません。環境はそんあに難しくないです。

それでは、まず準備から始めます

  • Gmailアカウント

持っていない方は取得してください。

  • mail.jar activation.jarのダウンロード

Javaでのメールライブラリになるmail,jarとactivation.jarをOracle社のサイトからダウンロードします。

zipファイルでダウンロードされますので、解答して中にあるjarファイルのみ取り出してください。

以上で準備完了です

プログラム作成

プログラムを作成します。今回はメインクラスから起動するシンプルなクラスで動作を確認します。

Eclipseでプロジェクトを作成します。

文字コードはISO-2022-JPでエンコードでしてサンプルメールをJavaプログラムから送信してみます

import java.util.Properties;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class SendMailSample {
  public static void main(String[] args) {
    try {
      Properties property = new Properties();
      // 各種設定             property.put("mail.smtp.host", "smtp.gmail.com");
      property.put("mail.smtp.auth", "true");
      property.put("mail.smtp.starttls.enable", "true");
      property.put("mail.smtp.host", "smtp.gmail.com");
      property.put("mail.smtp.port", "587");
      property.put("mail.smtp.debug", "true");
      Session session = Session.getInstance(property, new javax.mail.Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
          return new PasswordAuthentication("Gメールアカウント", "パスワード");
        }
      });
      MimeMessage mimeMessage = new MimeMessage(session);
      InternetAddress toAddress = new InternetAddress("宛先メールアドレス", "宛先名");
      mimeMessage.setRecipient(Message.RecipientType.TO, toAddress);
      InternetAddress fromAddress = new InternetAddress("送信", "管理者");
      mimeMessage.setFrom(fromAddress);
      mimeMessage.setSubject("テストメール", "ISO-2022-JP");
      mimeMessage.setText("テストメールです", "ISO-2022-JP");
      Transport.send(mimeMessage);
      System.out.println("送信完了");
    } catch (Exception e) {
      System.out.println("エラー");
    }
  }
}

本格的に作るならエラー処理などはしっかり作る必要がありますが、処理自体はMail関連クラスの使い方させマスターすれば

それほど難しくありませんね。