JavaからHTMLメールを送信するサンプルコード
広告
ズバット引越し比較
Posted on 2021/12/14 at 5:20
サーバー機にて常駐させている自前のJavaアプリケーションがあるのですが、お知らせやエラー等の情報を携帯のメールに送信したいという事がありました。
今回はそのサンプルコードです。
ただし、契約しているプロバイダなどのSMTPサーバーがすでにあることを前提としております。
JavaMailライブラリをダウンロードする
こちらのページ から最新バージョン(2021年12月14日時点での最新バージョンは1.6.2)のjavax.mail.jarをダウンロードし、 使用しているIDEのプロジェクトの「ビルド・パス」にjavax.mail.jarを追加します。
サンプルコード
import java.io.UnsupportedEncodingException;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class MailTest {
private String to = "送信先アドレス";
public static void main(String[] args) {
MailTest mailTest = new MailTest();
StringBuilder b = new StringBuilder();
b.append("<div class=\"content\">");
b.append("<p class=\"title\">◇ お知らせメール</p>");
b.append("<ul>");
b.append("<li>お知らせ1</li>");
b.append("<li>お知らせ2</li>");
b.append("</ul>");
b.append("</div>");
mailTest.sendHTMLMail("Java Mail Api", "お知らせです", b.toString());
}
public void sendTextMail(String from, String title, String message) {
Properties objPrp=new Properties();
objPrp.put("mail.smtp.host","SMTPアドレス");
objPrp.put("mail.smtp.port", "SMTPポート");
// メールセッションを確立
Session session = Session.getDefaultInstance(objPrp, null);
// 送信メッセージを生成
MimeMessage objMsg = new MimeMessage(session);
Transport transport = null;
try {
// 送信先(TOのほか、CCやBCCも設定可能)
objMsg.setRecipients(Message.RecipientType.TO, to);
// Fromヘッダ
InternetAddress objFrm = new InternetAddress("Fromアドレス", from);
objMsg.setFrom(objFrm);
// 件名
objMsg.setSubject(title, "ISO-2022-JP");
// 本文
objMsg.setText(message+"\n", "ISO-2022-JP");
transport = session.getTransport("smtp");
transport.connect();
transport.sendMessage( objMsg,objMsg.getAllRecipients());
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
} finally{
if (transport != null) {
try {
transport.close();
} catch(MessagingException e){
e.printStackTrace();
}
}
}
}
public void sendHTMLMail(String from, String title, String content) {
Properties objPrp=new Properties();
objPrp.put("mail.smtp.host","SMTPアドレス");
objPrp.put("mail.smtp.port", "SMTPポート");
// メールセッションを確立
Session session = Session.getDefaultInstance(objPrp, null);
// 送信メッセージを生成
MimeMessage objMsg = new MimeMessage(session);
Transport transport = null;
try {
// 送信先(TOのほか、CCやBCCも設定可能)
objMsg.setRecipients(Message.RecipientType.TO, to);
// Fromヘッダ
InternetAddress objFrm = new InternetAddress("Fromアドレス", from);
objMsg.setFrom(objFrm);
// 件名
objMsg.setSubject(title, "ISO-2022-JP");
// 本文
objMsg.setContent(createHTML(content), "text/html; charset=ISO-2022-JP");
transport = session.getTransport("smtp");
transport.connect();
transport.sendMessage( objMsg,objMsg.getAllRecipients());
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
} finally{
if (transport != null) {
try {
transport.close();
} catch(MessagingException e){
e.printStackTrace();
}
}
}
}
private String createHTML(String content) {
StringBuilder b = new StringBuilder();
b.append("<html><head>");
b.append("<style type=\"text/css\">");
b.append("div.content div { padding: 0 5px;}");
b.append("div.content p.title { width: 100%; background-color: #83c51a; font-color: #fff; font-size: 1.2em; padding: 5px 0 5px 5px; margin: 5px 0;}");
b.append("ul {background-color: #fff; width:100%;}");
b.append("li {font-size: 1em; padding: 0; margin: 0; background-color: #fff;}");
b.append("</style>");
b.append("</head>");
b.append("<body>");
b.append(content);
b.append("</body></html>");
return b.toString();
}
}