猿问

python smtp模块发送邮件显示乱码的问题,smtp模块文本编码的选择

我用python的smtp模块登陆QQ邮箱发邮件给用户,邮件内容和标题都是UTF-8编码,并且在MIME中设置了Content-Type为text/html;charset=utf-8
问题重现:用户收到的邮件大部分是乱码,QQ邮箱显示正常,163系乱码,大部分企业自用邮箱估计也是乱码
问题定位:请问在smtp模块中怎样选择编码?
经测试python的smtp不能发送unicode(对UTF8文本进行decode)
自助:在163中可以手动切换为utf8编码,这样可以正确显示,考虑到163的默认编码为GB2312,我把邮件内容和标题改为GB2312编码后发到163,但依旧是乱码请问大家有没有类似的经验可以分享一下?备注:
1.smtp的server是QQ企业邮箱
2.感谢theo的回答,但是对我貌似没起作用
3.补上我的原代码:importsmtplib
fromemail.mime.multipartimportMIMEMultipart
fromemail.mime.textimportMIMEText
server=smtplib.SMTP()
server.connect('smtp.exmail.qq.com','25')
server.login('myemail@qq.com','passwd')
msg=MIMEMultipart('alternative')
msg=MIMEMultipart('alternative')
msg['Subject']=subject
msg['From']='myemail@qq.com'
msg['To']=sendTo
msg.attach(MIMEText(htmlBody,'html','utf-8'))
server.sendmail('myemail@qq.com','target@fac.com',msg.as_string())根据theo的回答,应该在最后一行处改为msg.as_string().encode('ascii')
但是会报错,无法decode和encode
杨魅力
浏览 1033回答 2
2回答

人到中年有点甜

part=MIMEText(htmlBody,'html','utf-8')part.add_header("Content-Type",'text/plain;charset="utf-8"')指定MIMETEXT的头信息里面字符集是utf-8就可以了
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答