在.net 中我们经常会利用MailMessage 和SmtpMail 配合发信,只要smtp server配置好,一般不会有什么大的问题
但最近我在帮 www.danceshopper.com 进行多语言升级的时候,发现只要是繁体的邮件,到了hotmail中就subject是乱码,内容也是乱码,但用foxmail或outlook收到客户端的时候,问题就不存在了,类似的问题也会在gmail[已经解决]163等地方出现,困扰了我好几天,经过反复总结测试后,我得到了一个[或者说发现]正确发出非乱码邮件的方案.
其实很简单,就是你邮件的编码必须正确,这里编码需要注意到的地方有2处
1 邮件中的 charset 比如 html邮件必须包括 <META http-equiv="Content-Type" content="text/html; charset=gb2312">
2 BodyEncoding,请获取你发信件的所在的语系,不能用utf8
为什么强调不能用utf8呢,我分析是如hotmail这个老mailserver 可能开发的时间较久,不能对目前html进化有很好的支持,尤其是什么utf8 unicode这类东西,但hotmail对很多人来说又是一个不可缺少的邮箱,用它收发自己日常的信件[我基本不用,太慢了],所以 字符集这些东西必须强制制定,很多做多语言的朋友因为接触到功能强大的utf8,往往和我一样将这个问题忽略了,这里有必要提醒大家,呵呵,需要恢归原始
但最近我在帮 www.danceshopper.com 进行多语言升级的时候,发现只要是繁体的邮件,到了hotmail中就subject是乱码,内容也是乱码,但用foxmail或outlook收到客户端的时候,问题就不存在了,类似的问题也会在gmail[已经解决]163等地方出现,困扰了我好几天,经过反复总结测试后,我得到了一个[或者说发现]正确发出非乱码邮件的方案.
其实很简单,就是你邮件的编码必须正确,这里编码需要注意到的地方有2处
1 邮件中的 charset 比如 html邮件必须包括 <META http-equiv="Content-Type" content="text/html; charset=gb2312">
2 BodyEncoding,请获取你发信件的所在的语系,不能用utf8
为什么强调不能用utf8呢,我分析是如hotmail这个老mailserver 可能开发的时间较久,不能对目前html进化有很好的支持,尤其是什么utf8 unicode这类东西,但hotmail对很多人来说又是一个不可缺少的邮箱,用它收发自己日常的信件[我基本不用,太慢了],所以 字符集这些东西必须强制制定,很多做多语言的朋友因为接触到功能强大的utf8,往往和我一样将这个问题忽略了,这里有必要提醒大家,呵呵,需要恢归原始