でOutlook上でHTML形式の電子メールでCSSを送信しようとすると、私は、文字列を構築し、パラメータ私のメールメソッドとしてそれを渡すことで、HTML形式の電子メールを送信しようとしている:JavaMailの
// Build string to send as email message
StringBuilder buf = new StringBuilder();
buf.append("<html>" +
"<body>" +
"<table>" +
"<tr style=\"background-color: #8C0000; color: #fff; font-family: Arial; font-size: 14px; font-weight: bold;\">" +
"<th style=\"padding: 10px;\">Assigned Group</th>" +
"<th style=\"padding: 10px;\">Incident Type</th>" +
"<th style=\"padding: 10px;\">Status</th>" +
"<th style=\"padding: 10px;\">Assignee</th>" +
"<th style=\"padding: 10px;\">Incident Number</th>" +
"<th style=\"padding: 10px;\">Priority</th>" +
"<th style=\"padding: 10px;\">Summary</th>" +
"</tr>");
for (int i = 0; i < incidentNumberList.size(); i++) {
buf.append("<tr style=\"font-family: Arial; font-size: 12px;\"><td style=\"padding: 10px;\">")
.append(assignedGroup)
.append("</td><td style=\"padding: 10px;\">")
.append(incidentTypeList.get(i))
.append("</td><td style=\"padding: 10px;\">")
.append(statusList.get(i))
.append("</td><td style=\"padding: 10px;\">")
.append(assigneeNameList.get(i))
.append("</td><td style=\"padding: 10px;\">")
.append(incidentNumberList.get(i))
.append("</td><td style=\"padding: 10px;\">")
.append(priorityList.get(i))
.append("</td><td style=\"padding: 10px;\">")
.append(summaryList.get(i))
.append("</td></tr>");
}
buf.append("</table>" +
"</body>" +
"</html>");
String emailMessage = buf.toString();
// Send an email to the manager of the Assigned Group
sendManagerEmail(emailMessage);
メール方法:
private static void sendManagerEmail(String emailMessage) {
final String username = "user";
final String password = "pass123";
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
if (ENCRYPT) {
props.put("mail.smtp.starttls.enable", "true");
} else {
props.put("mail.smtp.starttls.enable", "false");
}
props.put("mail.smtp.ssl.trust", "internetsmtp.example.com");
props.put("mail.smtp.host", "internetsmtp.example.com");
props.put("mail.smtp.port", "25");
// SSL
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
Session session = Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("[email protected]"));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse("[email protected]"));
message.setSubject("Tickets — Attention Needed");
message.setContent(emailMessage
, "text/html; charset=utf-8");
Transport.send(message);
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
ここで重要な行はmessage.setContent(emailMessage , "text/html; charset=utf-8");
です。このメソッドに送信したHTMLコードの文字列は、メッセージコンテンツの本文から構成されています。
電子メールはテーブルでフォーマットされていますが、CSSではフォーマットされていないため、かなり醜いものになります。 CSSを表示するためにここでできることはありますか?私はhtmlタグに直接スタイルを構築すれば十分だろうと思っていました。
メールのHTMLを投稿できますか? –
メールのHTMLは上に表示されています。それは文字列として構築され、メールメソッドに渡されます。 @AdrienQUINT – santafebound
しかし、最終的なレンダリング(電子メール)はどのように見たいですか? –