こちらの記事は改良版があります。そちらをご覧ください。
Commons-emailで簡単メール送信
Javaでメール送信するとなるとJavaMailですが、結構設定が多くて面倒になります。
私が利用しているのはcommons-email (https://commons.apache.org/proper/commons-email/ ) 。
ただ、日本語の添付ファイルをどうやったら文字化けしないように送信できるかにはまりました。
解決案
package mailrectest;
import javax.mail.internet.MimeUtility;
import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.MultiPartEmail;
public class SendMailWithAttachFile {
public static void main(String[] args) {
try {
// System.setProperty("mail.mime.encodefilename", "true");
// System.setProperty("mail.mime.charset", "ISO-2022-JP");
// 添付1
EmailAttachment attach1 = new EmailAttachment();
String name = "/home/XXXXXX/日本語のファイル名.pdf";
attach1.setPath(name);
attach1.setDisposition(EmailAttachment.ATTACHMENT);
String name1 = MimeUtility.encodeText("日本語のファイル名.pdf");
attach1.setName(name1);
//添付2
EmailAttachment attach2 = new EmailAttachment();
attach2.setPath("/home/XXXXXX/次のファイル.pdf");
attach2.setDisposition(EmailAttachment.ATTACHMENT);
attach2.setName("次のファイル.pdf");
MultiPartEmail email = new MultiPartEmail();
email.setHostName("<SMTPサーバー>");
email.setSmtpPort(<SMTPサーバーのポート>);
email.setStartTLSEnabled(true);
email.setAuthentication("<SMTPのID>", "<SMTPパスワード>");
email.setFrom("<差出人>");
String subject = MimeUtility.encodeText("<タイトル>".strip(), "iso-2022-jp", "B");
subject = MimeUtility.unfold(subject);
email.setSubject(subject);
email.setMsg("<本文>");
String[] listTOs = {"<送信先1>","<送信先2>"};
for (String listTO : listTOs) {
email.addTo(listTO);
}
//ファイルを添付
email.attach(attach1);
email.attach(attach2);
// email.setDebug(true);
email.send();
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
}