zoukankan      html  css  js  c++  java
  • Python发送多人邮件报错

    问题现状

    to_email = ['***@qq.com','***@qq.com']
    

    发送邮件时会报以下错误

    AttributeError: ‘list’ object has no attribute ‘encode’ )
    

    问题分析

    列表没有encode的属性,原因是提取列表中的某个邮箱时,它依然还是列表类型,所以我们需要将它转换成字符串类型。因为字符串是可以使用encode方法。

    解决办法

    方法一:

    to_email = ["xxxxxxxxx@qq.com", "xxxxxxxxx@qq.com"]
    msg['To'] = ','.join(to_email )
    

    这么发貌似没有问题,但实际上只有第一个人收到邮件了,其他人都没有收到。
    究其原因,是Python的smtplib模块中,发送对象和实际发送对象是两种格式的数据。发生对象格式必须是字符串,实际发送的格式则是列表。

     msg = MIMEMultipart()
     msg['Subject'] = Header(subject, 'utf-8')
     msg['From'] = self.user
     msg['To'] = to
    

    发送的对象格式按如下修改成字符串格式

     msg = MIMEMultipart()
     msg['Subject'] = Header(subject, 'utf-8')
     msg['From'] = self.user
     msg['To'] = ','.join(to)
    

    实际发送的格式依然按照之前定义的列表格式

    users = [***@qq.com,***@qq.com]
    smtp.sender(to=users, attachments=report_abspath)
    

    然后大功告成,所有人都收到了邮件和附件。
    方法二:
    按照上面的格式进行处理也是可以成功的,具体我就不试了。
    思路:按下列字符串格式进行填写用户列表,然后实际发送的时候转换成列表即可。

    to_email = "xxxxxxxxx@qq.com, xxxxxxxxx@qq.com"
    
  • 相关阅读:
    误操作 rpm -e --nodeps zlib
    Raid阵列之简单介绍
    GpG使用指南
    hadoop系统的端口
    网站日志流量复杂分析
    Flume在企业大数据仓库架构中位置及功能
    Hue的安装与部署
    Hive中的数据倾斜
    Hive的三种Join方式
    如何每日增量加载数据到Hive分区表
  • 原文地址:https://www.cnblogs.com/huny/p/14176607.html
Copyright © 2011-2022 走看看