• Python 使用QQ 邮箱进行发送邮件及经验总结


     今天我带大家实现下简单的发邮件功能。我们要使用到email和smtplib库,这两个库时python自带的,直接import 引用就好了,实现环境python3.6.

    • 对QQ邮箱进行开启SMTP服务

             开启SMTP服务可以查看此链接,讲的很详细: https://jingyan.baidu.com/article/b0b63dbf1b2ef54a49307054.html

             如下图:需要开启POP3/SMTP 服务,获取到的授权码,就是你登陆时需要用到的。

         

    •    使用QQ邮箱进行邮件发送: 代码如下

                 第一步:登陆QQ邮箱。

                 第二步:构建发件人,收件人,邮件标题,邮件内容等信息。

                 第三步:发送邮件。

         

     1 import smtplib
     2 import email
     3 from email.mime.text import MIMEText
     4 from email.header import Header
     5 from email.mime.multipart import MIMEMultipart
     6 
     7 #纯文本格式发送email
     8 def email_sendmail_txt(sender,receiver,title,message):
     9     username = "67xxxx305@qq.com"
    10     password_pop3 = "veixxxxxkmflxxgb"
    11     #password_imap = "wpxxxxxyjnxxbcje"
    12     smtp = smtplib.SMTP()
    13     smtp.connect('smtp.qq.com')
    14     smtp.login(username, password_pop3)
    15     msg = MIMEText(message, "plain", 'utf-8')
    16     msg["Subject"] = Header(title, 'utf-8')
    17     msg["From"] = sender
    18     msg["To"] = receiver
    19     to_address = receiver.split(',')    #将Str格式的receiver分割成list格式,才能发送邮件给多个人。
    20     smtp.sendmail(sender, to_address, msg.as_string())
    21     smtp.quit()
    22 
    23 if __name__ == "__main__":
    24 
    25   sender = "67xxxx305@qq.com"
    26   receiver = 'lixx@vaxxxxxch.com,67xxxx305@qq.com'
    27 
    28   mail_message = 'Dear all,
            今日CP3良率监控情况如下所示:
             您们好,我是TE助理1号,很高兴加入TE group,我会努力为大家提供服务,希望大家能够喜欢我,谢谢!
    '
    29 
    30   mail_title = "CP3 yield monitor"
    31 
    32   email_sendmail_txt(sender,receiver,mail_title,mail_message) #登陆QQ邮箱并发送消息

         

    • 问题总结
    1. 用email_sendmail 发送邮件,明明有很多个接收人,但是只有第一个人能收到邮件。

             ->:原因在于msg["To"] = receiver 的类型为str,而email_sendmail 中to_address 参数则需要是list格式,两者参数不一样。

                 两者如果混用,导致结果就是,发送的mail显示是有很多个收件人,可是成功收取邮件的只有第一个人而已。

                  从smtplib.py中找到sendmail 函数定义就可以看到。

     

                  解决办法:如下图只需要将msg["To"] = receiver str类型的内容通过split()进行分割成list格式,就解决了!!!

  • 相关阅读:
    帝国cms 同个IP可提交一次
    帝国cms 图片相对路径绝对路径设置问题+帝国cms 手机端调用图片问题
    帝国CMS 手机版制作+帝国PC跳转到手机+重新定向
    帝国cms 相关问题
    简洁 清晰弹出层讲解制作(图片点击放大)
    webstorm 2016最新版破解+汉化
    ajax点击不断加载数据列表
    js中substr,substring,indexOf,lastIndexOf,split的用法
    Parallax.js|强大的javascript视觉差特效引擎
    一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10
  • 原文地址:https://www.cnblogs.com/lize19940412/p/10850522.html
Copyright © 2020-2023  润新知