今天我带大家实现下简单的发邮件功能。我们要使用到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邮箱并发送消息
- 问题总结
- 用email_sendmail 发送邮件,明明有很多个接收人,但是只有第一个人能收到邮件。
->:原因在于msg["To"] = receiver 的类型为str,而email_sendmail 中to_address 参数则需要是list格式,两者参数不一样。
两者如果混用,导致结果就是,发送的mail显示是有很多个收件人,可是成功收取邮件的只有第一个人而已。
从smtplib.py中找到sendmail 函数定义就可以看到。
解决办法:如下图只需要将msg["To"] = receiver str类型的内容通过split()进行分割成list格式,就解决了!!!