1概要

このクイックチュートリアルでは、添付のあるなしにかかわらず、コアJavaメールライブラリを使用して電子メールを送信する方法について説明します。


2プロジェクトの設定と依存関係

この記事では、Javaメールライブラリに依存する単純なMavenベースのプロジェクトを使用します。

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.5.0-b01</version>
</dependency>

最新版はhttps://search.maven.org/classic/#search%7Cgav%7C1%7Cg%3A%22javax.mail%22%20AND%20a%3A%22mail%22[here]にあります。


3プレーンテキストとHTML形式の電子メールを送信する

まず、メールサービスプロバイダの資格情報を使用してライブラリを設定する必要があります。次に、送信用のメッセージを作成するために使用する____Sessionを作成します。

設定は、Java

__Properties

__objectを介して行われます。

Properties prop = new Properties();
prop.put("mail.smtp.auth", true);
prop.put("mail.smtp.starttls.enable", "true");
prop.put("mail.smtp.host", "smtp.mailtrap.io");
prop.put("mail.smtp.port", "25");
prop.put("mail.smtp.ssl.trust", "smtp.mailtrap.io");

上記のプロパティ設定では、メールホストをMailtrapとして設定し、サービスによって提供されるポートも使用します。

それでは、ユーザー名とパスワードを使用してセッションを作成して、さらに進みましょう。

Session session = Session.getInstance(prop, new Authenticator() {
    @Override
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(username, password);
    }
});

ユーザー名とパスワードは、メールサービスプロバイダによって、ホストパラメータとポートパラメータとともに指定されます。


__Session


objectというメールがあるので、送信用の


MimeMessage

__を作成しましょう。

Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("[email protected]"));
message.setRecipients(
  Message.RecipientType.TO, InternetAddress.parse("[email protected]"));
message.setSubject("Mail Subject");

String msg = "This is my first email using JavaMailer";

MimeBodyPart mimeBodyPart = new MimeBodyPart();
mimeBodyPart.setContent(msg, "text/html");

Multipart multipart = new MimeMultipart();
multipart.addBodyPart(mimeBodyPart);

message.setContent(multipart);

Transport.send(message);

上記のスニペットでは、最初に必要なプロパティ – to、from、およびsubjectを持つ

__message


instanceを作成しました。私たちのメッセージはHTMLでスタイル化されているので、

text/htmlのエンコーディングを持つ

__mimeBodyPart

__が続きます。

次に行ったのは、作成した

mimeBodyPart

をラップするために使用できる

__MimeMultipart

__objectのインスタンスを作成することです。

最後に、

__multipart


objectを

message

の内容として設定し、


Transport


objectの


send()

__を使用してメール送信を行います。

  • したがって、


    _ mimeBodyPart





    messpartに含まれる


    multipart


    tartに含まれていると言えます。


    Hence、


    multipart


    は、複数の

    mimeBodyPart_

    ** を含むことができます。

これが次のセクションの焦点となるでしょう。


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

次に、添付ファイルを送信するには、別の

__MimeBodyPart

__を作成し、それにファイルを添付するだけです。

MimeBodyPart attachmentBodyPart = new MimeBodyPart();
attachmentBodyPart.attachFile(new File("path/to/file"));

それから先ほど作成した

__MimeMultipart

__オブジェクトに新しい本文部分を追加できます。

multipart.addBodyPart(attachmentBodyPart);

私たちがする必要があるのはこれだけです。

  • もう一度、

    __multipart


    instanceを


    message


    オブジェクトの内容として設定し、最後に


    send()

    __を使用してメール送信を行います** 。


5結論

結論として、添付ファイルがあっても電子メールを送信するためにネイティブJavaメールライブラリを使用する方法を見ました。

いつものように、完全なソースコードはhttps://github.com/eugenp/tutorials/tree/master/core-java[over on Github]から入手できます。