如何解决JAVAMAIL发送html格式邮件时的乱码问题

如何解决JAVAMAIL发送html格式邮件时的乱码问题,第1张

是由于编码不同造成的乱码,应首先试一试转换编码的方法。因为这种编码大多出现在中文邮件上。因此,当乱码出现时首先应当检查编码方式是否为“简体中文(GB2312)”,如果不是可用鼠标点取“查看”菜单下的“编码”选项,选中“简体中文(GB2312)”编码方式,如果不行,切换成其他编码试试,通常问题都能得到解决。

你在 javamail 里面设置附件的时候,需要注意两个地方:

1)设置 subType 为 related (这个是必须的,否则有些程序会将内置的图当成附件来处理了)

2)  使用 MimeMultipart 来将各个内容分别 add 进去。

你可以直接参考下面链接的内容:

http://stackoverflow.com/questions/2996514/inline-images-in-email-using-javamail

这里面给你把部分内容直接复制出来了:

 MimeMultipart rootContainer = new MimeMultipart()

  rootContainer.setSubType("related") 

  rootContainer.addBodyPart(alternativeMultiPartWithPlainTextAndHtml) // not in focus here

  rootContainer.addBodyPart(createInlineImagePart(base64EncodedImageContentByteArray))

  ...

  message.setContent(rootContainer)

  message.setHeader("MIME-Version", "1.0")

  message.setHeader("Content-Type", rootContainer.getContentType())

  ...

  BodyPart createInlineImagePart(byte[] base64EncodedImageContentByteArray) throws MessagingException {

    InternetHeaders headers = new InternetHeaders()

    headers.addHeader("Content-Type", "image/jpeg")

    headers.addHeader("Content-Transfer-Encoding", "base64")

    MimeBodyPart imagePart = new MimeBodyPart(headers, base64EncodedImageContentByteArray)

    imagePart.setDisposition(MimeBodyPart.INLINE)

    imagePart.setContentID("&ltimage&gt")

    imagePart.setFileName("image.jpg")

    return imagePart

相信使用过Spring的众多开发者都知道Spring提供了非常好用的 JavaMailSender 接口实现邮件发送。在Spring Boot的Starter模块中也为此提供了自动化配置。下面通过实例看看如何在Spring Boot中使用 JavaMailSender 发送邮件。

在Spring Boot的工程中的 pom.xml 中引入 spring-boot-starter-mail 依赖:

如其他自动化配置模块一样,在完成了依赖引入之后,只需要在 application.properties 中配置相应的属性内容。

下面我们以QQ邮箱为例,在 application.properties 中加入如下配置(注意替换自己的用户名和密码):

通过单元测试来实现一封简单邮件的发送:

到这里,一个简单的邮件发送就完成了,运行一下该单元测试,看看效果如何?

由于Spring Boot的starter模块提供了自动化配置,所以在引入了 spring-boot-starter-mail 依赖之后,会根据配置文件中的内容去创建 JavaMailSender 实例,因此我们可以直接在需要使用的地方直接 @Autowired 来引入邮件发送对象。

对于qq邮箱这样写过后会报错:

1、异常信息:

这种错误一般是因为jre的lib下C:\Program Files\Java\jdk1.8.0_51\jre\lib\security,替换2个jar包,参考文档

http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html

2、异常信息

发送方必须要开启smtp,获取到的授权码,界面如下:

3、异常信息:

换成公司企业邮箱报错,通过将properties文件的内容修改就可以了,这里的用户密码就是自己的邮箱密码(这点不同于qq邮箱)

1. 发送HTML格式的邮件

注意: 这里创建的是 MimeMessageHelper ,且在调用 setText 时需要在第二个参数传入 true ,这样才会使用HTML格式发送邮件

通过velocity模板发送邮件:

在resources下建一个templates包 该包下建立一个文件template.vm,内容以html格式随便写

<html>

<body>

<h3>你好, ${username}, 这是一封模板邮件!</h3>

</body>

</html>

测试结果:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6260139.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-19
下一篇 2023-03-19

发表评论

登录后才能评论

评论列表(0条)

保存