如何使用Java邮件发送html消息 [英] How can I send an html message using Java mail

查看:273
本文介绍了如何使用Java邮件发送html消息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在发送来自Java的最好的电子邮件没有问题,但我现在尝试发送一个html如下:

Ive been sending plaintest email from Java no problem but Im now trying to send a html one as follows:

        MimeMessage message = new MimeMessage(Email.getSession());
        message.setFrom(new InternetAddress("support@jthink.net"));
        message.addRecipient(Message.RecipientType.TO, new InternetAddress(to, true));
        message.setSubject(subject);
        message.setContent(msg, "text/html");
        message.setText(msg);
        message.saveChanges();
        Transport.send(message);

然而,当我在我的客户端收到它时,它会以纯文本电子邮件的形式收到它,即它显示全部html标签而不是它们用于格式化,我检查了电子邮件标题,它确实说

However when I receive it in my client it receives it as a plain text email, i.e it shows all the html tags instead of them being used for formatting, and I have checked the email header and it does say

Content-Type: text/plain; charset=us-ascii

邮件标题中的

in the mail header

但是为什么因为我将text / html传递给setContent()方法,这似乎是你唯一需要做的事情。

but why because I pass "text/html" to the setContent() method and that seems to be the only thing you have to do.

推荐答案

您可以尝试以下方法:

message.setText(msg, "utf-8", "html");

message.setContent(msg, "text/html; charset=utf-8");

避免使用 setText 方法,只需要setContent。

Avoid the setText method, you only need setContent.

它应该是这样的:

MimeMessage message = new MimeMessage(Email.getSession()); 
message.setFrom(new InternetAddress("support@jthink.net"));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to, true));
message.setSubject(subject);
message.setContent(msg, "text/html; charset=utf-8");
message.saveChanges();
Transport.send(message);

希望对您有帮助!

这篇关于如何使用Java邮件发送html消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆