工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

Javaでメールを送信する方法:ステップバイステップガイド

Javaメール送信の準備

Javaアプリケーションでメールを送信するには、まずJavaMail APIとJava Activation Framework (JAF)をマシンにインストールする必要があります。

ダウンロードして解凍すると、各ディレクトリに複数のJARファイルが作成されます。mail.jarとactivation.jarをクラスパスに追加してください。

シンプルなメールの送信

ローカルマシンからシンプルなメールを送信する例を示します。localhostがインターネットに接続されており、メール送信が可能であることを前提としています。

サンプルコード

// ファイル名: SendEmail.java
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public class SendEmail {
    public static void main(String[] args) {
        // 受信者のメールアドレス
        String to = "abcd@gmail.com";
        // 送信者のメールアドレス
        String from = "web@gmail.com";
        // ローカルホストから送信と仮定
        String host = "localhost";

        // システムプロパティを取得
        Properties properties = System.getProperties();
        // メールサーバーの設定
        properties.setProperty("mail.smtp.host", host);

        // デフォルトのSessionオブジェクトを取得
        Session session = Session.getDefaultInstance(properties);

        try {
            // MimeMessageオブジェクトを作成
            MimeMessage message = new MimeMessage(session);
            // Fromヘッダーを設定
            message.setFrom(new InternetAddress(from));
            // Toヘッダーを設定
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
            // 件名を設定
            message.setSubject("これは件名です!");
            // 本文を設定
            message.setText("これは実際のメッセージです");
            // 送信
            Transport.send(message);
            System.out.println("メッセージを正常に送信しました....");
        } catch (MessagingException mex) {
            mex.printStackTrace();
        }
    }
}

このプログラムをコンパイルして実行すると、シンプルなメールが送信されます。

実行結果

$ java SendEmail
メッセージを正常に送信しました....

複数の宛先への送信

複数の受信者にメールを送信する場合は、以下のメソッドを使用します。

void addRecipients(Message.RecipientType type, Address[] addresses) throws MessagingException

パラメータの説明:

HTMLメールの送信

HTML形式のメールを送信する例です。基本的には前の例と同じですが、setContent()メソッドの第2引数に"text/html"を指定してHTMLコンテンツを含めます。これにより、任意のサイズのHTMLコンテンツを送信できます。

サンプルコード

// ファイル名: SendHTMLEmail.java
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public class SendHTMLEmail {
    public static void main(String[] args) {
        String to = "abcd@gmail.com";
        String from = "web@gmail.com";
        String host = "localhost";

        Properties properties = System.getProperties();
        properties.setProperty("mail.smtp.host", host);
        Session session = Session.getDefaultInstance(properties);

        try {
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(from));
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
            message.setSubject("これは件名です!");
            // HTMLメッセージを設定(第2引数でtext/htmlを指定)
            message.setContent("

これは実際のメッセージ

", "text/html"); Transport.send(message); System.out.println("メッセージを正常に送信しました...."); } catch (MessagingException mex) { mex.printStackTrace(); } } }

実行結果

$ java SendHTMLEmail
メッセージを正常に送信しました....

添付ファイル付きメールの送信

添付ファイルを含むメールを送信する例です。MimeMultipartを使用して、テキストパートと添付ファイルパートを組み合わせます。

サンプルコード

// ファイル名: SendFileEmail.java
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public class SendFileEmail {
    public static void main(String[] args) {
        String to = "abcd@gmail.com";
        String from = "web@gmail.com";
        String host = "localhost";

        Properties properties = System.getProperties();
        properties.setProperty("mail.smtp.host", host);
        Session session = Session.getDefaultInstance(properties);

        try {
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(from));
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
            message.setSubject("これは件名です!");

            // メッセージパートを作成
            BodyPart messageBodyPart = new MimeBodyPart();
            messageBodyPart.setText("これはメッセージ本文です");

            // マルチパートメッセージを作成
            Multipart multipart = new MimeMultipart();
            multipart.addBodyPart(messageBodyPart);

            // 添付ファイルパート
            messageBodyPart = new MimeBodyPart();
            String filename = "file.txt";
            DataSource source = new FileDataSource(filename);
            messageBodyPart.setDataHandler(new DataHandler(source));
            messageBodyPart.setFileName(filename);
            multipart.addBodyPart(messageBodyPart);

            // 完全なメッセージを設定
            message.setContent(multipart);
            Transport.send(message);
            System.out.println("メッセージを正常に送信しました....");
        } catch (MessagingException mex) {
            mex.printStackTrace();
        }
    }
}

実行結果

$ java SendFileEmail
メッセージを正常に送信しました....

ユーザー認証

メールサーバーがユーザーIDとパスワードによる認証を要求する場合、以下のようにプロパティを設定します。

props.setProperty("mail.user", "myuser");
props.setProperty("mail.password", "mypwd");

それ以外のメール送信メカニズムは上記で説明した通りです。

Java

  1. Java演算子をマスター:種類、構文、実践例
  2. Javaコメント:種類、使い方、ベストプラクティス
  3. Java拡張forループをマスター:構文、例、ベストプラクティス
  4. Java文字列をマスター:生成、メソッド、ベストプラクティス
  5. Javaインターフェース完全ガイド:概念、実装、ベストプラクティス
  6. Java無名インナークラス完全ガイド:定義、構文、実践例
  7. Javaのtry-with-resourcesをマスターする:自動リソース管理の仕組みと活用法
  8. Javaアノテーション完全ガイド:種類、配置場所、実践例
  9. Javaアサーション完全ガイド:バグ早期発見とコード信頼性の向上
  10. Java Vectorの理解:使い方、特徴、ArrayListとの比較
  11. Javaでメールを送信する方法:ステップバイステップガイド