Java で電子メールを送信する

  1. JavaMail APIを使用して電子メールを送信する
  2. JavaMail APIを使用して電子メールを送信する手順
    1. セッションオブジェクトを取得する
    2. メッセージを作成する
    3. メッセージを送る
  3. JavaMail APIを使用して電子メールを送信する簡単な例
  4. ホストプロバイダーが提供するSMTPサーバー経由でJavaMail APIを使用して電子メールを送信する例

JavaMail API を使用して電子メールを送信するには、さまざまな方法があります。この目的のために、メールの送信を担当する SMTP サーバーが必要です。

次のいずれかの手法を使用して SMTP サーバーを取得できます。

  • Postcast サーバー、Apache James サーバー、cmail サーバーなどの SMTP サーバーをインストールして使用します (または)
  • ホストプロバイダーが提供する SMTP サーバーを使用します。私の SMTP サーバーは mail.javatpoint.com (または)
  • 他社が提供する SMTP サーバーを使用します。 gmailなど

ここでは、javamail API を使用して電子メールを送信するための上記 3 つの方法を学習します。ただし、Java アプリケーションから電子メールを送信する基本的な手順を学ぶ必要があります。


JavaMail APIを使用して電子メールを送信する手順

JavaMailを利用してメールを送信するには以下の3つの手順があります。それらは次のとおりです。

    セッションオブジェクトを取得する ホスト名、ユーザー名、パスワードなどのホストのすべての情報を保存します。 メッセージを作成する メッセージを送る


1) セッションオブジェクトを取得する

javax.mail.Session クラス セッションのオブジェクトを取得するための 2 つのメソッド、Session.getDefaultInstance() メソッドと Session.getInstance() メソッドが提供されます。任意のメソッドを使用してセッション オブジェクトを取得できます。

Sessionクラスのメソッド

いいえ。 方法 説明
1 public static Session getDefaultInstance(Properties props) デフォルトのセッションを返します。
2 public static Session getDefaultInstance(プロパティ props,Authenticator auth) デフォルトのセッションを返します。
3 public static Session getInstance(プロパティ props) 新しいセッションを返します。
4 public static Session getInstance(プロパティ props,Authenticator auth) 新しいセッションを返します。

getDefaultInstance() メソッドの例

 Properties properties=new Properties(); //fill all the information like host name etc. Session session=Session.getDefaultInstance(properties,null);  

getInstance()メソッドの例

 Properties properties=new Properties(); //fill all the information like host name etc. Session session=Session.getInstance(properties,null);  

2) メッセージを作成する

javax.mail.Message クラスは、メッセージを作成するメソッドを提供します。ただし、これは抽象クラスであるため、そのサブクラスである javax.mail.internet.MimeMessage クラスが主に使用されます。
メッセージを作成するには、MimeMessage クラスのコンストラクターでセッション オブジェクトを渡す必要があります。例えば:
 MimeMessage message=new MimeMessage(session);  
これでメッセージオブジェクトが作成されましたが、このオブジェクトに情報を格納するために、MimeMessage クラスには多くのメソッドが用意されています。 MimeMessage クラスによって提供されるメソッドを見てみましょう。

MimeMessage クラスのよく使用されるメソッド

いいえ。 方法 説明
1 public void setFrom(アドレス address) from ヘッダー フィールドを設定するために使用されます。
2 public void addRecipient(Message.RecipientType タイプ, Address アドレス) 指定されたアドレスを受信者の種類に追加するために使用されます。
3 public void addRecipients(Message.RecipientType タイプ, Address[] アドレス) 指定されたアドレスを受信者の種類に追加するために使用されます。
4 public void setSubject(String subject) 件名のヘッダーフィールドを設定するために使用されます。
5 public void setText(String textmessage) text/plain MIME タイプを使用してテキストをメッセージ コンテンツとして設定するために使用されます。
6 public void setContent(Object msg, String contentType) は、指定された MIME タイプを使用してコンテンツをメッセージ コンテンツとして設定するために使用されます。

メッセージを作成する例:

 MimeMessage message=new MimeMessage(session); message.setFrom(new InternetAddress('[email protected]')); message.addRecipient(Message.RecipientType.To, new InternetAddress('[email protected]')); message.setHeader('Hi, everyone'); message.setText('Hi, This mail is to inform you...');  

3) メッセージを送信する

javax.mail.Transport クラスは、メッセージを送信するメソッドを提供します。

Transportクラスのよく使われるメソッド

いいえ。 方法 説明
1 public static void send(メッセージメッセージ) メッセージの送信に使用されます。
2 public static void send(メッセージメッセージ, Address[]アドレス) 指定されたアドレスにメッセージを送信するために使用されます。

メッセージを送信する例:

 Transport.send(message);  

Java で電子メールを送信する簡単な例

これらの jar ファイルをダウンロードするか、Oracle サイトにアクセスして最新バージョンをダウンロードしてください。
この例では、マシンにインストールされている SMTP サーバーによって電子メールを送信する方法を学びます。ポストキャスト サーバー、Apache James サーバー、Cmail サーバーなど。ホスト プロバイダーが提供する SMTP サーバーを使用して電子メールを送信する場合は、この後の例を参照してください。
JavaMail API を使用して電子メールを送信するには、次の 2 つの jar ファイルをロードする必要があります。
mail.jar
アクティベーション.jar
 import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendEmail { public static void main(String [] args){ String to = '[email protected]';//change accordingly String from = '[email protected]';change accordingly String host = 'localhost';//or IP address //Get the session object Properties properties = System.getProperties(); properties.setProperty('mail.smtp.host', host); Session session = Session.getDefaultInstance(properties); //compose the message try{ MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); message.addRecipient(Message.RecipientType.TO,new InternetAddress(to)); message.setSubject('Ping'); message.setText('Hello, this is example of sending email '); // Send message Transport.send(message); System.out.println('message sent successfully....'); }catch (MessagingException mex) {mex.printStackTrace();} } }  
この例をダウンロードして電子メールを送信します

この例では、マシンにインストールされている SMTP サーバーによって電子メールを送信する方法を学びます。ポストキャスト サーバー、Apache James サーバー、Cmail サーバーなど。ホスト プロバイダーが提供する SMTP サーバーを使用して電子メールを送信する場合は、この後の例を参照してください。

この例を実行するには、2 つの jar ファイルをロードする必要があります。 jar ファイルをロードするには 4 つの方法があります。方法の 1 つはクラスパスを設定することです。この例を実行する方法を見てみましょう。

jarファイルをロードする c:> set classpath=mail.jar;activation.jar;.;
ソースファイルをコンパイルする c:> javac SendEmail.java
が運営する c:> Java メール送信

ホストプロバイダーが提供する SMTP サーバーを介して Java で電子メールを送信する例

これらの jar ファイルをダウンロードするか、Oracle サイトにアクセスして最新バージョンをダウンロードしてください。
ホストプロバイダーが提供する SMTP サーバーを使用している場合 (例: mail.javatpoint.com では、ユーザー名とパスワードを認証する必要があります。 javax.mail.PasswordAuthentication クラスは、パスワードの認証に使用されます。
JavaMail API を使用して電子メールを送信している場合は、2 つの jar ファイルをロードします。
mail.jar
アクティベーション.jar
 import java.util.Properties; import javax.mail.*; import javax.mail.internet.*; public class SendMailBySite { public static void main(String[] args) { String host='mail.javatpoint.com'; final String user='[email protected]';//change accordingly final String password='xxxxx';//change accordingly String to='[email protected]';//change accordingly //Get the session object Properties props = new Properties(); props.put('mail.smtp.host',host); props.put('mail.smtp.auth', 'true'); Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(user,password); } }); //Compose the message try { MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(user)); message.addRecipient(Message.RecipientType.TO,new InternetAddress(to)); message.setSubject('javatpoint'); message.setText('This is simple program of sending email using JavaMail API'); //send the message Transport.send(message); System.out.println('message sent successfully...'); } catch (MessagingException e) {e.printStackTrace();} } }  
この例をダウンロードして電子メールを送信します

上の例でわかるように、ユーザー ID とパスワードを認証する必要があります。このプログラムが示すように、電子メールを簡単に送信できます。ユーザー名とパスワードを適宜変更してください。簡単なテクニックでもう一度実行する方法を見てみましょう。

jarファイルをロードする c:> set classpath=mail.jar;activation.jar;.;
ソースファイルをコンパイルする c:> javac SendMailBySite.java
が運営する c:> java SendMailBySite