为什么80%的码农都做不了架构师?>>>   

使用python发邮件很简单,但是遇到乱码问题很烦恼。 乱码问题有几种:有发件人名称乱码,有标题乱码,也有正文乱码的问题。

要解决发件人名称乱码问题,必须使用Header,如下代码:

from email.header import Header
from = ("%s") % (Header('OutOfMemory.CN管理员','utf-8'),)

通过这样设置发件人之后,发件人的显示就不会有乱码的现象了。

邮件主题乱码问题

邮件主题乱码有可能是在某些邮箱出现,例如我遇到发给Gmail不会乱码,但是发给sina.cn的邮箱就会乱码。

要解决邮件主题乱码的问题需要保证subject必须是unicode,如下:

if not isinstance(subject,unicode):subject = unicode(subject)
msg['Subject'] = subject

解决邮件正文乱码问题

首先需要将MIMEText指定为utf-8编码,然后还要设置msg['Accept-Language']和msg['Accept-Charset']两个属性,如下代码片段:

    msg = MIMEText(body,format,'utf-8')msg["Accept-Language"]="zh-CN"msg["Accept-Charset"]="ISO-8859-1,utf-8"

解决了以上三个问题,邮件乱码问题就不存在了,下面是完整的发邮件代码:

import smtplib
from email.mime.text import MIMEText
from email.header import Header
#下面一行要设置成你自己的邮件服务器的地址以及用户名密码发件人信息
host,user,password,fromMail = smtpInfo
def sendMail(mailto,subject,body,format='plain'):if isinstance(body,unicode):body = str(body)me= ("%s<"+fromMail+">") % (Header(_mailFrom,'utf-8'),)msg = MIMEText(body,format,'utf-8')if not isinstance(subject,unicode):subject = unicode(subject)msg['Subject'] = subjectmsg['From'] = memsg['To'] = mailtomsg["Accept-Language"]="zh-CN"msg["Accept-Charset"]="ISO-8859-1,utf-8"try:s = smtplib.SMTP()s.connect(host)s.login(user,password)s.sendmail(me, mailto, msg.as_string())s.close()return Trueexcept Exception, e:print str(e)return False 

上面的程序测试过发送到Gmail,Sina,QQ,163以及HotMail,均没有乱码问题。

转载于:https://my.oschina.net/donhui/blog/522520

python 发送邮件解决所有乱码问题相关推荐

  1. python中解决中文乱码

    解决中文乱码 什么是字符编码 python 的字符编码 encode和decode unicode还可以decode吗? UTF-8还可以encode吗? 解决中文编码问题 问题1:使用request ...

  2. 在visual studio code中配置python以及解决中文乱码问题

    安装好 visual stuido code (下面简称 " VSC ")后,要想使用它运行调试 python 代码还需要做一些工作以解决下列问题: 搭建 python 环境 pr ...

  3. python爬虫解决中文乱码和爬取美女图片

    想试试爬取图片是,结果图片名字打印的时候就出现了中文乱码. 代码是这样的 # -- coding:UTF-8 -- from lxml import etree import requests imp ...

  4. 如何解决oracle中文乱码问题,oracle中解决中文乱码问题

    中文乱码问题解决 1.查看服务器端编码 select userenv('language') from dual; 查到结果是: USERENV('LANGUAGE') --------------- ...

  5. python cmd 窗口 中文乱码 解决方法 (附:打印不同颜色)

    python cmd 窗口 中文乱码 解决方法 (附:打印不同颜色) 参考文章: (1)python cmd 窗口 中文乱码 解决方法 (附:打印不同颜色) (2)https://www.cnblog ...

  6. Python发送邮件smtplib.SMTP各报错问题的解决方法

    Python发送邮件smtplib.SMTP各报错问题的解决方法 参考文章: (1)Python发送邮件smtplib.SMTP各报错问题的解决方法 (2)https://www.cnblogs.co ...

  7. Python解决中文乱码问题

    在学Python的过程中,一直困扰我的就是中文乱码,输上英文之后看上去不得劲,所以只能解决这个乱码问题,为了这个问题,百度查了谷歌查,还有包括自己总结的,终于解决了,下面看个案例吧(continue) ...

  8. java mail header_java使用mail发送邮件时出现乱码如何解决

    java使用mail发送邮件时出现乱码如何解决 发布时间:2020-06-24 13:23:24 来源:亿速云 阅读:199 作者:Leah java使用mail发送邮件时出现乱码如何解决?相信很多没 ...

  9. php jmail 乱码,ASP实例:解决Jmail发送邮件标题出现乱码

    ASP实例:解决Jmail发送邮件标题出现乱码 (2011-08-29 10:02:00) 标签: 邮件服务器 邮件标题 乱码 网页设计 gb2312 it 做JMAIL发邮件的时候,接收到的邮件标题 ...

最新文章

  1. 为什么java退出全屏_Java全屏模式与退出全屏:
  2. 从根因入手,更有效率,效果也更好
  3. C_Imap 邮件的imap
  4. HDU 1285 - 确定比赛名次(拓扑排序)
  5. [云炬创业基础笔记]第五章创业计划评估16
  6. 关于linux分区与挂载的解释
  7. 桶排序+基数排序+计数排序
  8. python语句int_python中的int函数
  9. 为什么有些女孩在发现渣男的真面目以后,还喜欢他们?
  10. mysql 当天创建分区表_mysql8.0 定时创建分区表记录 每天定时创建下一天的分区表...
  11. JZOJ5197 C
  12. docker 代理_利用Docker容器实现代理转发和数据备份
  13. Utrack声卡和机架包的调试
  14. 网络工程师必备工具之超级终端
  15. linux php muma,php实现Linux服务器木马排查及加固功能
  16. vue3 web项目引入高拍仪
  17. java 反应堆模式_Java NIO 反应堆模式
  18. 计算机如何添加新用户,笔记本电脑怎么样快速添加新用户帐号
  19. nginx配置—图片不存在时给一张默认图片
  20. Go语言解析Json(使用jsonparser)

热门文章

  1. .net 插件式开发学习总结
  2. 2019秋第二周学习总结
  3. 详解数据库引擎与SQL语句增删改查(非常详细,带例)
  4. spring(一):spring IoC的注入方式总结
  5. Windows Server 2012 RS 配置IIS8.0+发布网站
  6. 安徽大学大一高数第二章习题册答案
  7. Eclipse 常用最新插件.标记
  8. Make uploadify button text support multiple languages(使uploadify的buttonText支持多国语言)
  9. python爬取b站粉丝数_【python爬虫】每天统计一遍up主粉丝数!
  10. python模拟鼠标点击和键盘输入的操作_Python模拟鼠标点击及键盘输入(PyUserInput)...