JavaでHello World
Google
  HOME  |  基礎  |  掲示板  |  ツール |  書籍  |  デザインパターン  |  リンク  |  フィードバック
JavaでHello World > JavaMail(SMTP)編  
メニュー
Home
情報交換掲示板
ツールの部屋
Java関連の書籍
アプリケーション編
Swing編
Swing(イベント)編
Swing(Look&Feel)編
アプレット編
iアプリ編
サーブレット編
サーブレット(Linux)編
サーブレット(web.xml)編
サーブレット(セッション)編
サーブレット(クッキー)編
サーブレット(フィルタ)編
JSP編
JSP(ディレクティブ)編
JSP(アクション)編
JSP(スクリプト)編
JSP(オブジェクト)編
JSP(カスタムタグ)編
JSP(データベース)編
Apache + Tomcat編
Struts編
JDBC編
JDBC(データソース)編
JDBC(MySQL)編
JDBC(PostgreSQL)編
JDBC(トランザクション)編
JavaMail(SMTP)編
JavaMail(POP)編
JNI編
RMI編
RMI(アプレット)編
CORBA編
JNDI編
EJB編
EJB(Entity Bean)編
JMS(PTP)編
JMS(Pub/Sub)編
XML(SAX)編
XML(DOM)編
XSLT編
SOAP編
国際化編
国際化(タイムゾーン)編
国際化(通貨)編
リフレクション編
コレクション編
コレクション(Set)編
コレクション(List)編
コレクション(Map)編
スレッド編
正規表現編
アサーション編
ログ機能編
サウンド編
ファイル入出力編
URL編
ソケット編
データグラム編
HTTP
FTP編
jar編
javadoc編
Ant編
外部コマンド編
プロパティファイル編
システムプロパティ編
Eclipse編
  2002/02/03  田中宏和
LastUpdate 2002/10/29
JavaMail(SMTP)編
◆SMTPとは?
SMTPSimple Mail Transfer Protocolの略です。メールを送信するときに使われるプロトコルです。下のJavaMailのAPIを使えばこのプロトコルを知らなくてもメールを簡単に送れます。
◆JavaMailとは?
JavaMailとはJavaのプログラムから、メールの送受信を行うためのAPIです。JavaMailのAPIを使用してJavaでメールを送受信するプログラムを作成することができます。
◆ここでの環境
OS Windows 2000
J2SE SDK 1.4.0
◆メール送信に使用するライブラリ
JavaMail バージョン1.3
JAF(JavaBeans Activation Framework) バージョン1.0.2
◆Java実行環境の構築
アプリケーション編を参考にしてJava実行環境を構築してください。
◆JavaMailのライブラリをCLASSPATHに設定
■mail.jarをCLASSPATHに設定
まずJavaMailをダウンロードします。
ダウンロード → JavaMail
ダウンロードしたファイルを解凍してください。解凍したフォルダに入っているmail.jarをCLASSPATHに設定します。
■activation.jarをCLASSPATHに設定
JavaMailのライブラリで使用するJAF(JavaBeans Activation Framework)もダウンロードしてCLASSPATHに設定します。
ダウンロード → JAF
ダウンロードしたファイルを解凍したフォルダに入っているactivation.jarをCLASSPATHに設定してください。
 
メールを送信してみよう!
メールを送信して、それをメールクライアントで受信して「Hello World」と表示してみたいと思います。
◆Javaソースコード
HelloWorldJavaMail.java(ここからダウンロード)
import java.util.Properties;
import java.util.Date;
import javax.mail.Session;
import javax.mail.Message;
import javax.mail.Transport;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.InternetAddress;

public class HelloWorldJavaMail {
  public static void main(String[] args) {
    try {
      Properties props = System.getProperties();
      // SMTPサーバーのアドレスを指定
      props.put("mail.smtp.host","xxx.xxx.xxx.xxx");
      Session session=Session.getDefaultInstance(props,null);
      MimeMessage mimeMessage=new MimeMessage(session);
      // 送信元メールアドレスと送信者名を指定
      mimeMessage.setFrom(new InternetAddress("xx@xx.co.jp","田中 宏和","iso-2022-jp"));
      // 送信先メールアドレスを指定
      mimeMessage.setRecipients(Message.RecipientType.TO,"xx@xx.co.jp");
      // メールのタイトルを指定
      mimeMessage.setSubject("Hello World JavaMail","iso-2022-jp");
      // メールの内容を指定
      mimeMessage.setText("<h1>Hello World JavaMail</h1>","iso-2022-jp");
      // メールの形式を指定
      mimeMessage.setHeader("Content-Type","text/html");
      // 送信日付を指定
      mimeMessage.setSentDate(new Date());
      // 送信します
      Transport.send(mimeMessage);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}
 
(注意)
「SMTPサーバーのアドレス」
「送信元メールアドレス」「送信者」「送信先メールアドレス」は環境に合わせて設定していください。
◆コンパイル
コマンドプロンプト
C:\JavaHello\javamail>javac HelloWorldJavaMail.java

C:\JavaHello\javamail>

◆メールの送信
コンパイルが成功しましたら、さっそくメールを送信してみましょう!
コマンドプロンプト
C:\JavaHello\JavaMail>java HelloWorldJavaMail

C:\JavaHello\JavaMail>
おおおお!!どうやらうまく動いたみたいです。さっそく、メールクライアントでメールを受信して確認してみましょう。
表示されましたね!
 
ファイルを添付してメールを送信してみよう!
次にファイルを添付してメールを送信してみたいと思います。
◆Javaソースコード
HelloWorldSendFile.java(ここからダウンロード)
import java.util.*;
import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public class HelloWorldSendFile {
  public static void main(String[] args) {
    try {
      Properties props = System.getProperties();
      // SMTPサーバーのアドレスを指定
      props.put("mail.smtp.host", "xxx.xxx.xxx.xxx");
      Session session = Session.getDefaultInstance(props, null);
      MimeMessage mimeMessage = new MimeMessage(session);
      // 送信元メールアドレスと送信者名を指定
      mimeMessage.setFrom(new InternetAddress("xx@xx.co.jp", "田中 宏和","iso-2022-jp"));
      // 送信先メールアドレスを指定
      mimeMessage.setRecipients(Message.RecipientType.TO, "xx@xx.co.jp");
      // メールのタイトルを指定
      mimeMessage.setSubject("SendMailでファイル添付!" , "iso-2022-jp");


      /** 1つ目のボディパートを作成 **/
      MimeBodyPart mbp1 = new MimeBodyPart();
      // メールの内容を指定
      mbp1.setText("SendMailでファイルを添付します。" , "iso-2022-jp");

      /** 2つ目のボディパートを作成 **/
      MimeBodyPart mbp2 = new MimeBodyPart();
      // 添付するファイル名を指定
      FileDataSource fds = new FileDataSource("helloworld.txt");
      mbp2.setDataHandler(new DataHandler(fds));
      mbp2.setFileName(MimeUtility.encodeWord(fds.getName()));

      // 複数のボディを格納するマルチパートオブジェクトを生成
      Multipart mp = new MimeMultipart();
      // 1つ目のボディパートを追加
      mp.addBodyPart(mbp1);
      // 2つ目のボディパートを追加
      mp.addBodyPart(mbp2);

      // マルチパートオブジェクトをメッセージに設定
      mimeMessage.setContent(mp);

      // 送信日付を指定
      mimeMessage.setSentDate(new Date());
      // 送信します
      Transport.send(mimeMessage);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}
 
(注意)
「SMTPサーバーのアドレス」
「送信元メールアドレス」「送信者」「送信先メールアドレス」「添付ファイル」は環境に合わせて設定していください。
◆添付ファイルの用意
ソースファイルと同じ場所に添付ファイルを用意してください。ここでは「helloworld.txt」というファイルを用意しました。
 
◆メールの送信
メールを送信してみましょう。
コマンドプロンプト
C:\>cd C:\JavaHello\javamail

C:\JavaHello\javamail>javac HelloWorldSendFile.java

C:\JavaHello\javamail>java HelloWorldSendFile

C:\JavaHello\javamail>

おおお!無事おくれたようです。メールクライアントで受信してみてみましょう!
◆メールの受信と確認
おおおお!ファイルが添付されていますね!
 
■関連
JavaMail(POP)編
■書籍
Java関連の書籍

 
  ネットで買えば断然お得!お買い物なら楽天市場
ツールの部屋 - Java関連の書籍 - デザインパターン - 情報交換掲示板 - HOME