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格式,就解决了!!!

原文地址:https://www.cnblogs.com/lize19940412/p/10850522.html