Javaでメールを送る
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]から入手できます。