美文网首页
SMTP发送邮件python

SMTP发送邮件python

作者: 朱允见 | 来源:发表于2018-03-17 12:43 被阅读0次

    小序一下

    • 公司最近学习氛围真好,功能性测试慢慢也开始转向,自动化测试了,并且一段时间做的是有模有样的,在这里还是给他们点72个👍即使他们看不见。呵呵,记录一个有意思的事情,证明我们还活着。
    • 爱生活,爱钻研,爱分享,这次是帮助测试实现一个小功能,也就是自动测试完成后生成的测试报告,自动群发公司内部人员
    • 下面进入正题,本次分享是一个很小的功能,不过其中还是有些坑的。

    上干货

    import smtplib,sys,re
    from email import encoders
    from email.mime.base import MIMEBase
    from email.mime.multipart import MIMEMultipart
    
    def sendMs():
        smtpserver = 'smtp.163.com'
        username = 'xxxx' #用户名
        password = 'xxx' #密码  这里的密码不是163.com 的登录密码而是,在设置里的授权密码
        msgRoot = MIMEMultipart('related')
    
        subject = '这是邮件内容'
        msgRoot['Subject'] = subject
    
        sender = 'zyjian@163.com'  # 发件人
        #收件人,这里是用的 “,” 把多个接收邮箱拼接起来
        receiver = '2394142087@qq.com,719307805@qq.com' 
        receiver_list = receiver.split(',')
        msgRoot['From'] = sender  #之前没有写From和To,发送邮件出现554错误
        #注意:这里接收的是 多个收件人 字符串类型
        msgRoot['To'] = receiver
    
        # 添加附件就是加上一个MIMEBase,从本地读取一个图片:
        with open('./form.html', 'rb') as f:
            # 设置附件的MIME和文件名,这里是png类型:
            mime = MIMEBase('html', 'png', filename='test.html')
            # 加上必要的头信息:
            mime.add_header('Content-Disposition', 'attachment', filename='test.html')
            mime.add_header('Content-ID', '<0>')
            mime.add_header('X-Attachment-Id', '0')
            # 把附件的内容读进来:
            mime.set_payload(f.read())
            # 用Base64编码:
            encoders.encode_base64(mime)
            # 添加到MIMEMultipart:
            msgRoot.attach(mime)
    
        smtp = smtplib.SMTP()
        smtp.connect('smtp.163.com')
        smtp.login(username, password)
          
        #注意:这里接收的是 多个收件人 数组类型
        smtp.sendmail(sender, receiver_list, msgRoot.as_string())
        smtp.quit()
        print("发送完毕")
    
    if __name__ == '__main__':
        sendMs()
    
    
    • 代码量很少,但是有些地方还是需要注意的,代码中我也做了注释
    1. 代码中的密码,是授权密码,这里我列举的是163邮箱,获取授权密码的步骤


      image.png
    2. 此种方式,创建邮件对象,不会报状态 554:垃圾邮件错误
    3. 附件也可增加多个
    4. 注意
      4.1这里接收的是 多个收件人 字符串类型
      msgRoot['To'] = receiver
      4.2 这里接收的是 多个收件人 数组类型
      smtp.sendmail(sender, receiver_list, msgRoot.as_string())

    相关文章

      网友评论

          本文标题:SMTP发送邮件python

          本文链接:https://www.haomeiwen.com/subject/fyfjqftx.html