java mail 发件人昵称,Java使用javax.mail发送邮件 解决收件人、发件人名字乱码问题..._男爵兔的博客-程序员宝宝

技术标签: java mail 发件人昵称  

/**

* 格式化 Name 的地址

* @param name 名字

* @param email Email地址

* @return 格式化的地址

*/

public static String formatAddress(String name, String email) {

if (StringHelper.isNullOrEmpty(name)) {

return email;

}

try {

return String.format("%1$s ", MimeUtility.encodeText(name, "UTF-8", "B"), email);

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

return email;

}

上面的函数用来格式化一个类似 Name 的收件人或发件人地址。

解决名字乱码主要是其中一句:

MimeUtility.encodeText(name, "UTF-8", "B")

由于Email的规范,在smtp传输中不可使用中文字符。所以可以使用内置类的MimeUtility方法encodeText将收件人、发件人名字编码即可。编码方式有两种:"B"代表Base64、"Q"代表QP(quoted-printable)方式。

注意:不能将名字和email地址一起编码,如直接编码 "Name " 后当做收件人就会出错。

注意:Mail的Subject和Content不需要我们显式的编码,在Set的时候这两项会被javax.mail自动编码。

上面的编码中指定了"UTF-8"字符集,是因为我的来源字符串在DB或者.properties文件中的都是UTF-8编码存储的。如果您的来源字符串字符集不一致,请修改成相应的。(直接写在源代码中的中文编码是"iso-8859-1")

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42127020/article/details/115625689

智能推荐

基于Linux下的C语言入门-day1_大写的ZDQ的博客-程序员宝宝

经历了一礼拜的ruby on rails的全栈开发了解,觉得自己基本上已经放弃了目前基于Mac OS下开发的坚持,一来自己的笔电已经用了4年,开个MAC虚拟机占用的内存基本上已经到顶,切回Window界面会卡一会,而且在苹果系统内操作也是那种延迟的感觉,所以我立马买了一块kinston的4G内存条,打算改善一下爱机的身体~所以呢,网站全栈开发先放一放罢。一是自己将来专业是通信,接触到网站设

Jquert easyui datagrid queryParams使用_dummy_杜的博客-程序员宝宝

之前用jquery easyui+php给公司GS同事开发了一个辅助查询的页面工具,用于辅助他们分析产品上的问题。今天收到一个小需求,一次性批量导入数据批量查询。一直以为这个功能是已经实现的。后来才发现只能固定字符的查询,查询了解到是因为GET方法的局限性问题造成的。而POST并没有该限制。之前也一致喜欢用GET,因为GET非常简单方便调试 只要在浏览器上输入url?param1=a&param2

程序员外行的中医脏腑观点_小木屋大梦想的博客-程序员宝宝

基本上看这图就是:左右两个部分:即两个循环,首先是心火的下降和肾水的上升,相交于脾则肝木升,终于心火;还有一个是心火的下降和肾水的上升,相交于脾则肺将,终于肾水。这样看就不乱了,也没有一个无休无止的死循环了。通俗的讲就是两个原料提供者心火和肾水,一个下降一个上升。在此产生两个过程,一个是肝的生发,肝的生发可以理解为是一个生产过程;还有一个就是肺的肃降,肃降的过程可以通俗的理解为没有完成的东西或

服务器不定时无故重启_weixin_33872566的博客-程序员宝宝

系统:Centos6.8 64位 32GB内存以下是messages及dmesg日志。[[email protected] ~]# less /var/log/messages | grep -i errorMay 27 07:59:20 CYCN-APSRV kernel: end_request: I/O error, dev xvda, sector 280590May...

Silverlight学习笔记(1)——样式的运用_weixin_30750335的博客-程序员宝宝

本文将建立一个silverlight项目中的运用样式的简单实例,以下是详细步骤:  新建一个Silverlight应用程序,名称SilverlightTest  新建文件夹Assets,用以存放样式文件,在Assets文件夹中新建一个Silverlight资源字典,名称Styles.xaml,后面Silverlight项目引用到的样式资源我们将全部写在Styles....

随便推点

Oracle 1z0-071 2019.10最新题库&解答 1_QIDANIEL的博客-程序员宝宝

QUESTION 1Choose the best answer.Exanine the desciption of the EMPLOYEEStable:Nane Null TypeEMP_ID NOT NUL NUMBEREMP_NAME VARCHAR2(40)...

决AndroidStudio 安卓模拟器安装在D盘问题_weixin_30613433的博客-程序员宝宝

决AndroidStudio 安卓模拟器安装在D盘问题转 http://www.cnblogs.com/LiuDanK/articles/10106473.html大家知道安卓的模拟器位置默认是放在C盘的,这样比较占空间,可以通过创建·符号链接的方式来“欺骗”AS,从而创建到D盘:以管理员身份打开命令提示符,输入以下命令:mklink /D C:\Users\xxx\.a...

计算机网络与综合布线系统设计,计算机网络综合布线系统设计_知乎校园的博客-程序员宝宝

综合布线综合布线系统低压电器(2∞8№24)现代建筑电气篇计算机网络综合布线系统设计i巧巧(广东机电职业技术学院,广东广州510515)摘要:详细介绍了计算机网络综合布线系统及其设计,其中包括综合布线系统的组成、综合布线系统的网络结构、综合布线设计标准规范、综合布线系统的设备选型等。结合综合布线应用实例,对综合布线系统设计中的重点内容进行了阐述。关键词:综合布线;计算机网络;网络拓扑结构;通信系统...

Python--day3作业_仲夏夜之梦~✪ω✪的博客-程序员宝宝

1.集合操作:set_data1 = {1, 2, 3, 4}set_data2 = {2, 3, 5}求两个集合的交集求两个集合的并集求两个集合的差集set_data1 = {1, 2, 3, 4}set_data2 = {2, 3, 5}new = set_data1.intersection(set_data2)print(new)new1 = set_data1.union(set_data2)print(new1)new2 = set_data1.difference(se

oracle数据文件头损坏6,文件头损坏ORA-01122 ORA-01210恢复_ae1915d的博客-程序员宝宝

有朋友数据文件头出现错误ORA-01122和ORA-01210等错误,数据库无法正常open。因为平台是win,他们找我咨询win bbed,因为回老家电脑没有带,无法提供win的bbed.我通过dd部分文件头,然后在linux平台分析发现是该文件的文件头block大量坏块bbed分析坏块情况BBED> show allFILE# 0BLOCK# 1OF...

Toutiao 项目源码阅读_碧云天丶的博客-程序员宝宝

项目地址一款第三方今日头条客户端, MVP + RxJava + Retrofit架构标准的MVP架构IBasePresenter层每个P层都有刷新界面以及显示网络错误需求public interface IBasePresenter { void doRefresh(); void doShowNetError();}IBaseView层每个V层都有展示状态页,设置Presenter,以及解除RxJava订阅防止内存泄漏的接口.public interface I.