邮件标题乱码问题解决一例

最近有用户反馈在mac下通过airmail、outlook这样的邮件客户端查看系统发出邮件的标题显示为乱码,但是windows下正常。

通过邮件客户端保存为eml,用sublime text 2打开,可以发现展示为以下效果:

Date: Wed, 01 Jul 2015 19:54:57 +0800
From: <此处省略>
To: "=?GBK?B?zt6+zA==?=" <此处省略>
Subject: [MTLÑз¢Ö§³Å] ÏîĿ״̬֪ͨ
X-Mailer: smtp-cli 3.6, see http://smtp-cli.logix.cz
Message-Id: 1435751697-132512@smtp-cli

Subject直接传入了中文内容,不符合邮件MIME规范。windows显示正常,不过是因为系统本身良好的兼容性而已。

想要编码相应的文字,只需要按照以下格式:

=?charset?encoding?encoded text?=

encoding有两个可选值:Q和B,前者表示QP编码(Quoted-printable),后者为BASE64编码。

我们选择BASE64作为编码方案,处理一下Subject:

private String encodeSubject(String subject) {
        byte[] base64 = org.apache.commons.codec.binary.Base64.encodeBase64(subject.getBytes());
        return String.format("=?UTF-8?B?%s?=", new String(base64));
    }

经过这么处理,发送出去的邮件中的Subject不再是中文,乱码问题也就随之解决。

 

[参考资料]

https://en.wikipedia.org/wiki/MIME

 

转载于:https://www.cnblogs.com/kanzume/p/4614518.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值