前回は単純なテキストメールの送信方法を紹介しました。
今回は添付ファイル付きのメールを送りたいと思います。
せっかくなので種類の違うプレーンテキストと PDF の 2 種類のファイルを添付したいと思います。
maven の pom.xml の記載と「安全性の低いアプリのアクセス」の許可は前回の記事を参照してください。
あとテキストファイル「テキスト.txt」と PDF ファイル「sample.pdf」を用意しておいてください。
package org.yyama; import java.io.File; import java.io.FileInputStream; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.mail.Message; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import javax.mail.util.ByteArrayDataSource; public class Mail { public static void main(String[] args) { try { Properties property = new Properties(); property.put("mail.smtp.host", "smtp.gmail.com"); property.put("mail.smtp.auth", "true"); property.put("mail.smtp.starttls.enable", "true"); property.put("mail.smtp.host", "smtp.gmail.com"); property.put("mail.smtp.port", "587"); property.put("mail.smtp.debug", "true"); Session session = Session.getInstance(property, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("Gmailのアカウント", "Gmailのパスワード"); } }); // テキスト部分 MimeBodyPart part1 = new MimeBodyPart(); part1.setText("テキスト", "iso-2022-jp"); // テキストファイル部分 DataSource dataSource2 = new ByteArrayDataSource(new FileInputStream( new File("テキスト.txt")),"text/plain"); MimeBodyPart part2 = new MimeBodyPart(); part2.setDataHandler(new DataHandler(dataSource2)); part2.setFileName("テキスト.txt"); // PDFファイル部分 DataSource dataSource3 = new ByteArrayDataSource(new FileInputStream( new File("sample.pdf")),"application/pdf"); MimeBodyPart part3 = new MimeBodyPart(); part3.setDataHandler(new DataHandler(dataSource3)); part3.setFileName("sample.pdf"); final MimeMultipart multipart = new MimeMultipart(); multipart.addBodyPart(part1); multipart.addBodyPart(part2); multipart.addBodyPart(part3); MimeMessage mimeMessage = new MimeMessage(session); InternetAddress toAddress = new InternetAddress("受信者のメールアドレス", "受信者名"); mimeMessage.setRecipient(Message.RecipientType.TO, toAddress); InternetAddress fromAddress = new InternetAddress("送信者のメールアドレス", "送信者"); mimeMessage.setFrom(fromAddress); mimeMessage.setSubject("title", "ISO-2022-JP"); mimeMessage.setContent(multipart); Transport.send(mimeMessage); System.out.println("メール送信が完了しました。"); } catch (Exception e) { e.printStackTrace(); } } }
細かい説明は省略しますが、このプログラムで正しくメールが送信できました。
本日はここまで!
- 作者:高橋 麻奈
- 発売日: 2019/01/22
- メディア: 単行本