電子メールを読み取り、その内容を取得する JavaMail を使用したアプリケーションを作成しました。コンテンツは HTML で取得されます。このコンテンツは分析され、別の電子メール アドレスに転送されます。
Chrome、Mozilla、Outlook、Office 365、Thunderbird、Internet Explorer で電子メールのレイアウトをテストしました。もちろん、IEを除いて、すべてがうまく機能します。
スクリーンショットをいくつか作成しました。1 つは Chrome で、もう 1 つは Internet Explorer で、両方とも同じメール クライアント (Office 365) から作成しました。
Chrome での適切なメール
不正な IE 電子メール
multipart
メールの本文部分と添付ファイル部分をまとめました。これは私が使用しているコードです:
public void SentTest(String messageContent) throws IOException, ParseException, NoSuchProviderException {
//Only get text between HTML tags
Pattern pattern = Pattern.compile(".*?<html.*?>(.*?)</html>.*?");
Matcher matcher = pattern.matcher(messageContent);
if (matcher.matches()) {
messageContent= matcher.group(1);
}
messageContent= Jsoup.clean(messageContent, Whitelist.relaxed());
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smpt.host", "pod51010.outlook.com");
props.put("mail.smtp.port", "587");
props.put("mail.smtp.starttls.enable", "true");
Session session = Session.getInstance(props, null);
try {
transport = session.getTransport("smtp");
try {
transport.connect("host", "email", "password");
} catch (MessagingException ex) {
ex.printStackTrace();
}
} catch (NoSuchProviderException ex) {
ex.printStackTrace();
}
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("email"));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse("testemail"));
message.setSubject("Test");
MimeBodyPart testMessagePart = new MimeBodyPart();
testMessagePart.setText(inhoudBericht, "ISO-8859-1", "html");
testMessagePart.setHeader("Content-Type", "text/html; charset=\"iso-8859-1\"");
testMessagePart.setHeader("Content-Transfer-Encoding", "quoted-printable");
testMessagePart.setHeader("MIME-Version", "1.0");
Multipart multipart = new MimeMultipart("multipart");
multipart.addBodyPart(testMessagePart);
//Set the content of the Message
message.setHeader("", "");
message.setContent(multipart, "html; charset=\"iso-8859-1\"");
try {
transport.sendMessage(message, message.getAllRecipients());
} catch (Exception ex) {
ex.printStackTrace();
}
transport.close();
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
私の質問は、電子メールのレイアウトを柔軟にして、すべてのブラウザで機能するようにするにはどうすればよいですか?
編集
<html>
タグを追加し、HTML から属性Doctype
を削除するとwidth
、レイアウトは「正しく」表示されますが、もちろん別の問題があります。
ご覧のとおり、青色になり、表のアウトラインが表示されています。これを取り除くためのアイデアはありますか?
編集
bgcolor
タグを削除して、青い背景を取り除きました。唯一の問題は、表のアウトラインを削除することです。