python乱码怎么办_解决python发送邮件乱码问题

2023-11-10

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

一、发件人名称乱码

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

from email.header import Header

from = ("%s<361way_com@126.com>") % (Header('361way.COM管理员','utf-8'),)

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

二、subject主题乱码

邮件主题乱码有可能是在某些邮箱出现,例如我遇到发给163不会乱码,但是发给qq的邮箱就会乱码。要解决邮件主题乱码的问题需要保证subject必须是unicode,如下:

#code from www.361way.com

if not isinstance(subject,unicode):

subject = unicode(subject)

msg['Subject'] = subject

三、body正文乱码

解决邮件正文乱码问题,首先需要将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"

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

#code from www.361way.com

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'] = subject

msg['From'] = me

msg['To'] = mailto

msg["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 True

except Exception, e:

print str(e)

return False

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python乱码怎么办_解决python发送邮件乱码问题 的相关文章

  • python关系运算符连续使用_Python比较运算符(关系运算符)

    比较运算符 也称关系运算符 用于对常量 变量或表达式的结果进行大小比较 如果这种比较是成立的 则返回 True 真 反之则返回 False 假 True 和 False 都是 bool 类型 它们专门用来表示一件事情的真假 或者一个表达式是
  • Redis配置类

    天行健 君子以自强不息 地势坤 君子以厚德载物 每个人都有惰性 但不断学习是好好生活的根本 共勉 文章均为学习整理笔记 分享记录为主 如有错误请指正 共同学习进步 Redis配置类 Redis配置类1 Redis配置类2 在使用redis时
  • python 生成器

    生成器 对象后续元素按照某种算法推算出来 在python中 这种一边循环一边计算的机制 称为生成器 得到生成器的方法 1 利用列表推导式得到 cat generator py usr bin env python coding utf8 g
  • idea自动生成单元测类

    Navigate between tests and production code Intellj idea 中创建测试 test intellij idea 自动生成test单元测试 IntelliJ IDEA如何创建测试类 在Inll
  • 令人头秃的:你的主机中的软件中止了一个已建立的连接

    此文章来源于项目官方公众号 AirtestProject 版权声明 允许转载 但转载必须保留原链接 请勿用作商业或者非法用途 1 前言 最近在答疑群中 经常看到同学们遇到 你的主机中的软件中止了一个已建立的连接 这样的报错 这个报错可能的原
  • cpp: read and write utf-8 text file using vs 2022

    file geovindu h brief 业务操作方法 author geovindu Geovin Du date 2023 04 22 https learn microsoft com zh cn cpp build referen
  • 1400*C. No Prime Differences(找规律&数学)

    解析 由于 1 不是质数 所以我们令每一行的数都相差 1 对于行间 分为 n m之中有存在偶数和都为奇数两种情况 如果n m存在偶数 假设m为偶数 如果都为奇数 则 include
  • 中科大少年班毕业生撑起AI半壁江山!科技圈天才少年盘点

    中科大少年班毕业生撑起AI半壁江山 科技圈天才少年盘点 原创 刘燕 AI前线 AI前线 微信号ai front 功能介绍面向AI爱好者 开发者和科学家 提供AI领域技术资讯 一线业界实践案例 搜罗整理业界技术分享干货 AI论文解读 每周一节
  • BitTorrent协议规范(BitTorrent Protocol Specification)系列之B编码(Bencoding)-第一部分

    鉴定 BitTorrent是由布莱姆 科恩设计的一个端对端 peer to peer 文件共享协议 此协议使多个peers通过不可信任的网络的文件传输变得更容易 目的 此规范的目的是详细介绍 BitTorrent 协议规范 v1 0 Bra
  • [前端] iframe及postMessage使用解析

    这篇主要讲iframe标签 对于frameset frame noframe标签就不讲了 因为在h5中已经不支持了 一 iframe标签介绍 标签规定一个内联框架 一个内联框架被用来在当前 HTML 文档中嵌入另一个文档 二 iframe标
  • python图片上传

    1 前台
  • 【NLP】使用递归神经网络对序列数据进行建模 (Pytorch)

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • Linux截取字符串最后两位,linux的string操作(字符串截取,长度计算)

    按指定的字符串截取 1 第一种方法 varible string 从左向右截取最后一个string后的字符串 varible string 从左向右截取第一个string后的字符串 varible string 从右向左截取最后一个stri
  • 2022年,中国餐饮数字化进行到哪一步了?

    在餐饮数字化的进程中 企业有收获 但更多的却是失落 作者 斗斗 编辑 皮爷 出品 产业家 美团供应链里 有两个采购协议 要货协议的功能 在我看来就是一样的 十分鸡肋 黄晓辉为此还找到美团负责该业务的负责人 想要解答他的疑惑 他们业务负责人甚
  • 大数据毕设选题 - 深度学习股票预测系统(python Django)

    文章目录 0 前言 1 课题背景 2 实现效果 3 Django框架 4 数据整理 5 模型准备和训练 6 最后 0 前言 Hi 大家好 这里是丹成学长的毕设系列文章 对毕设有任何疑问都可以问学长哦 这两年开始 各个学校对毕设的要求越来越高
  • c#对接webservice接口

    方式一 需要填写地址 不能映射每个方法 工具类 using System using System CodeDom Compiler using System CodeDom using System Collections Generic
  • Win系统下安装Linux双系统教程(非常详细)从零基础入门到精通,看完这一篇就够了

    软件下载 软件 Linux 版本 18 0 4 语言 简体中文 大小 1 82G 安装环境 Win11 Win10 Win8 Win7 硬件要求 CPU 2 0GHz 内存 4G 或更高 下载通道 丨百度网盘 1 ubuntu18 0 4下
  • 【供应链架构day9】美团配送系统架构的演进之路:从MVP到规模化

    本文是美团永俊老师的分享 写在前面 美团配送自成立以来 业务经历了多次跨越式的发展 业务的飞速增长 对系统的整体架构和基础设施提出了越来越高的要求 同时也不断驱动着技术团队深刻理解业务 准确定位领域模型 高效支撑系统扩展 如何在业务高速增长
  • 杜比的音效生意

    转自 http tech sina com cn it 2010 08 25 13474586814 shtml 这家追求声音效果的企业 在其专利技术的基础上 不断延展自己的产业链 获得了高速成长 作者 陈庆春 杜比在中国消费电子市场有着非

随机推荐

  • 单元测试出现Class not found

    使用SpringBoot项目进行单元测试时 出现Class not found的报错 之前我是删除过测试部分 后来自己再写上去的 之后点击Maven的test 如下图 在运行就可以了
  • 差分GPS-RTK-千寻

    目录 GPS和GNSS的区别 差分GPS定位原理 1 位置差分原理 略 2 伪距差分原理 DGPS 3 载波相位差分原理 RTK 重点 千寻位置 GPS和GNSS的区别 GPS 指全球定位系统 Global Positioning Syst
  • UE4 FTP Client插件

    封装了ftplib的库 https github com mkulke ftplibpp 插件地址 https github com HeartlessLD UE4 FTPPlugin 这里大致说一下注意事项 可能有不全的 具体看代码 1
  • 【满分】【华为OD机试真题2023 JS】任务混部

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 任务混部 知识点差分 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 公司创新实验室正在研究如何最小化资源成本 最大化资源利用率 请你设计算法帮他们解决一个任务混
  • matlab 多核计算设置2

    由于处理器时钟频率的限制 增加核并不意味着是计算性能的提高 为了充分利用新的多核硬件在性能上的优势 软件的基层结构需要向并行计算转换 MATLAB并行计算工具箱就是这种需求的产物 它能很好地实现在多核系统上进行并行运算 文章以典型的数值计算
  • xray config.yaml文件配置出错解决

    开启监听时 出现 could not find expected 解决办法 xray 安全评估工具文档 去mitm模块复制一下粘贴到config中 mitm ca cert ca crt CA 根证书路径 ca key ca key CA
  • PAT (Basic Level) 1045 柳婼、旭神两大思路分析【测试点】样例

    1045 快速排序 25 分 著名的快速排序算法里有一个经典的划分过程 我们通常采用某种方法取一个元素作为主元 通过交换 把比主元小的元素放到它的左边 比主元大的元素放到它的右边 给定划分后的 N 个互不相同的正整数的排列 请问有多少个元素
  • 将字符串转化为16进制数

    在有些情况下 想得到n个16进制数 然而你只能得到一个字符串数组 数组中的数据都是文本形式 例如char s 1b5050508af890ef50 我想得到的是16进制数1b 50 而数组中的字符 每一位都可以转化为一个16进制数 1b转为
  • Python实现简易语音转文字功能模块

    1 实现功能 WAV格式的音频 gt 文字 2 代码实现 import speech recognition as sr from os import path global content 语音 gt 文字 def voice2Text
  • 数学期望 极小值的几种求法

    前言 其中一维搜索方法这种思想 在图像二值化里面有应用 像二维码算法里面的条形码二值化 就是这种算法的进阶版 缺点是只能按照一个方向进行搜索 且步伐需要调整 目录 数学期望例子 一维搜索方法求极值 黄金分隔法求极值 一 数学期望例子 普查某
  • Oracle case when 详解

    文章目录 1 概述 2 示例 when 执行顺序 3 ORA 06592 执行 CASE 语句时未找到 CASE 1 概述 1 case when 条件判断语句 1 相当于其它语言中的 if else 2 部分情况下 等同于 decode
  • Swagger & Knife4j

    Swagger Knife4j 1 Swagger介绍 1 简介 Swagger 是一个规范和完整的框架 用于生成 描述 调用和可视化 RESTful 风格的 Web 服务 https swagger io 它的主要作用是 使得前后端分离开
  • vue+element 实现表格,键盘上下键选择某一行,并选中

    1 直接上代码
  • Maven安装步骤汇总

    Maven安装步骤汇总 最近老是换机器开发 机器上又没有Maven 每次都要下载 安装 重复写配置文件 很麻烦 而习惯的常用配置网上教程很分散 故做整合 目录 Maven下载安装 配置环境变量测试 修改maven配置文件 3 1 修改本地仓
  • STM32在应用编程(IAP)详解

    什么是IAP STM32单片机的程序烧写有多种方法 分别为 JTAG SW ISP IAP gt JTAG的方式需要专用的烧写工具 在产品布置到现场后 更新产品程序比较麻烦 gt ISP即为 在系统编程 In System Programm
  • python之计算系统空闲内存、列表字典相互转换

    python之计算系统空闲内存 usr bin env python coding utf8 Time 2017 11 30 14 25 Author hantong File count free memory py 统计linux系统空
  • element date-picker range类型时间选择器 限制选中前后7天的时间的方法

    实现效果 代码
  • 使用webpack-bundle-analyzer分析uni-app 的微信小程序包大小(HbuilderX运行)

    1 找到vue config js 文件 如果找不到 则在项目根目录下 跟pages json同一个目录下 创建一个JS文件 命名为vue config js 2 安装webpack bundle analyzer 官方网站 https g
  • Java连接数据库警告WARN: Establishing SSL connection without server's identity ......

    今天搭了个框架 发现数据库发出了警告 Fri Mar 23 13 49 33 CST 2018 WARN Establishing SSL connection without server s identity verification
  • python乱码怎么办_解决python发送邮件乱码问题

    使用python发邮件很简单 但是遇到乱码问题很烦恼 乱码问题有几种 有发件人名称乱码 有标题乱码 也有正文乱码的问题 一 发件人名称乱码 要解决发件人名称乱码问题 必须使用Header 如下代码 from email header imp