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

2023-07-29,,

今天我带大家实现下简单的发邮件功能。我们要使用到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,\n 今日CP3良率监控情况如下所示:\n 您们好,我是TE助理1号,很高兴加入TE group,我会努力为大家提供服务,希望大家能够喜欢我,谢谢!\n'
29
30 mail_title = "CP3 yield monitor"
31
32 email_sendmail_txt(sender,receiver,mail_title,mail_message) #登陆QQ邮箱并发送消息

问题总结

    用email_sendmail 发送邮件,明明有很多个接收人,但是只有第一个人能收到邮件。

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

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

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

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

Python 使用QQ 邮箱进行发送邮件及经验总结的相关教程结束。

《Python 使用QQ 邮箱进行发送邮件及经验总结.doc》

下载本文的Word格式文档,以方便收藏与打印。