NuageL 2022-11-18 11:14 采纳率: 50%
浏览 23
已结题

UnicodeEncodeError: 'ascii' codec can't encode character

想用Python的SMTP给自己发邮件试试,在txt中随机选取一句话发送(中文),但是显示UnicodeEncodeError: 'ascii' codec can't encode characters in position 8-13: ordinal not in range(128),

img

试了网上的方法(python 3):

import importlib
importlib.reload(sys)

还是无法解决

  • 写回答

3条回答 默认 最新

  • CSDN专家-showbo 2022-11-18 11:41
    关注

    用下面的可以发送中文,题主那段代码用ascii编码中文内容会出错

    
    import smtplib
    from email.mime.text import MIMEText
    from email.header import Header
    
    
    from_addr = 'xxx@xxx.xxx'
    password = 'xxxx'
    to_addr = 'xxx@xx.xxx'
    smtp_server = 'xx.xx.xx'
    
    msg = MIMEText('使用python发送邮件测试', 'plain', 'utf-8')
    
    msg['From'] = Header('张三') 
    msg['To'] = Header('李四') 
    subject = 'Python SMTP 邮件测试'
    msg['Subject'] = Header(subject, 'utf-8') 
    
    try:
        smtpobj = smtplib.SMTP_SSL(smtp_server)
        smtpobj.connect(smtp_server, 465)  
        smtpobj.login(from_addr, password)   
        # 发送邮件
        smtpobj.sendmail(from_addr, to_addr, msg.as_string()) 
        print("邮件发送成功")
    except smtplib.SMTPException:
        print("无法发送邮件")
    finally:
        # 关闭服务器
        smtpobj.quit()
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月26日
  • 已采纳回答 5月18日
  • 创建了问题 11月18日