前不久在我所在的项目中做了一个发送html邮件模板的升级包,选一个人群,选一个模板,然后发送。
很简单的一个小功能,可是在coding的时候还是遇到了一些小问题。其中最主要的一个问题,就是模板文件本身的字符集的问题。
Properties props = System.getProperties();
Session session;
props.put("mail.smtp.host", strSMTPAdress);
props.put("mail.smtp.port", strSMTPPort);
if (strSenderPassword == null) {
props.put("mail.smtp.auth", "false");
session = Session.getDefaultInstance(props);
} else {
props.put("mail.smtp.auth", "true");
MyAuthenticator myauth = new MyAuthenticator(strSenderEmail, strSenderPassword);
session = Session.getDefaultInstance(props, myauth);
}
MimeMessage message = new MimeMessage(session);
上面的代码创建一个MimeMessage,再简单不过的事情了。
然后根据模板名称获取html文件内容,接着我做了这样一件事情,把模板内容转成gb2312编码。
try{
temp = IOUtils.toString(IOUtils.toInputStream(temp, "gb2312"));
// temp = new String(temp.getBytes("gb2312"),"ISO-8859-1");
} catch (IOException e){
logger.error("模板读取后,string格式转换时出错.", e);
return null;
}设置邮件正文:
message.setText(temp, "gb2312");
message.setDataHandler(new DataHandler(temp, "text/html;charset=gb2312"));
在邮件正文中,查找<title>XXX</title>,title的value就作为邮件的主题。这时候,就出问题了。
我是这么写的:
message.setSubject("=?GB2312?B?" + enc.encode(title.getBytes()) + "?=");
选了几个邮件模板也测试过,当时也没发现问题。可是上线后,用户使用的时候说主题出现乱码。让用户把模板发过来,本地再进行测试,居然发送后的邮件正文格式,都变成了纯文本。
使用下面的设置主题的方式后,就正常了:
message.setSubject(title);
暂时还没有深入的去查找原因,直觉上是认为和html文件本身的编码有关。
分享到:
相关推荐
我当前调试的是kettle 5.4.0.1版本,修复job中发送邮件时候中文乱码问题: 替换 data-integration\lib\kettle-engine-5.4.0.1-130.jar 这个jar包下 data-integration\lib\kettle-engine-5.4.0.1-130.jar\org\...
在使用JavaMail进行邮件发送的过程中,可能会遇到以下几种常见问题:发送成功但收件方未收到邮件、邮件收到后无主题或无收件人信息以及邮件内容出现乱码等情况。本文将详细探讨这些问题的原因及相应的解决方案。 ##...
- **使用第三方插件:** 如果TD内置功能无法满足需求,可以考虑使用第三方插件来增强TD的邮件发送能力。 #### 总结 通过以上分析与操作,我们可以有效地解决TD 7.6版本在发送邮件时出现的乱码问题。这对于提高测试...
System.Net.Mail命名空间提供了SmtpClient和MailMessage类来处理SMTP协议的邮件发送。在创建MailMessage对象时,我们可以设置Subject(主题)和Body(正文)的编码,例如使用Unicode(UTF-8)编码,以确保支持大多数...
在Python中发送带有中文内容的邮件时,可能会遇到乱码问题。这主要是因为编码不一致导致的。在本文中,我们将探讨如何解决Python发送邮件时出现的乱码问题。 首先,我们要了解邮件编码的基本概念。电子邮件标准规定...
perl读取excel内容,并发送html邮件!中文不乱码,直接下载可用,只需要改一下文件路径,这是已经上生产的脚本
PHPMailer是一个流行的PHP邮件发送类库,它允许开发者通过SMTP协议发送邮件,支持HTML内容和附件。当涉及到字符编码问题时,PHPMailer提供了设置邮件内容编码的方法,以确保不同邮件客户端能正确解析非ASCII字符,...
第90行,setSubject("")
以Outlook为例,当遇到邮件乱码时,可以尝试以下步骤解决问题: 1. **检查邮件头信息**:首先查看邮件头信息中的`Content-Type`和`Content-Transfer-Encoding`字段是否正确。 2. **调整编码设置**:根据邮件头信息...
本教程将详细介绍如何在QT5中建立TCP客户端和服务端,并解决中文乱码问题。 **一、QT5中的TCP通信** QT5提供了QNetworkAccessManager和QTcpSocket等类来处理TCP通信。QTcpSocket类是用于进行TCP连接的基础,它可以...
1. **检查邮件编码**: 邮件发送时,应确保正确设置邮件的字符编码。大多数现代邮件客户端默认使用UTF-8编码,因为它能支持更多的语言和特殊字符。如果发送方的邮件客户端设置为其他编码,可能会导致接收方收到乱码。...
在使用Navicat for MySQL工具进行数据导入时,经常会出现中文乱码的问题,尤其是在处理Excel文件时更为常见。这种现象不仅影响数据的正确性,还可能导致后续的数据分析和处理出现错误。因此,有效地解决Navicat for ...
在电子邮件的日常使用中,有时会遇到一个常见问题:当收件人打开一封邮件时,如果他们的设备上缺少用于渲染邮件中的某些特定字体,邮件内容可能会显示为乱码或者无法正常阅读。这个问题主要源于字体的不兼容性和可用...
`Transport`用于实际的邮件发送。 2. **配置SMTP服务器**: 发送邮件时,需要设置SMTP服务器地址和端口号,例如对于163邮箱,SMTP服务器通常是smtp.163.com,端口可能是465或587,使用SSL/TLS加密。此外,还需要...
- **编码问题**:邮件中的文本部分应使用合适的编码方式,如 UTF-8,以避免乱码问题。 - **邮件格式**:可以通过设置 `IsBodyHtml` 为 `true` 来发送 HTML 格式的邮件,使得邮件更美观。 - **异步处理**:发送邮件时...
2. **解决中文乱码问题**:在处理非ASCII字符,如中文字符时,SMTP库可能会遇到编码问题导致乱码。jwSMTP通过正确处理字符编码,如UTF-8,确保邮件中的中文字符能够正确显示,避免了乱码问题,这对于国际化的邮件...
本篇将深入探讨如何利用Delphi XE10与QQ 163邮箱服务器进行邮件发送,并解决在发送过程中可能出现的中文乱码问题。 首先,我们要理解SMTP(Simple Mail Transfer Protocol)协议,这是互联网上用于发送电子邮件的...
java socket发送SMTP邮件,支持SSL,支持发附件,抄送且发送的邮件标题内容都无乱码!
echo '邮件发送失败: ' . $mail->ErrorInfo; } else { echo '邮件已发送'; } ``` **多部分编码**:对于包含HTML、文本和附件的复杂邮件,PHPMailer支持多部分编码(MIME)。这可以确保邮件在不同客户端上显示一致...
在编程时,确保正确编码和解码邮件内容,以避免乱码问题。 9. **邮件队列**:对于大量邮件发送,使用邮件队列是一种有效的方法。邮件会被存储在一个队列中,按顺序发送,这样可以防止短时间内大量请求对服务器造成...