使用Python登录QQ邮箱发送QQ邮件

python基础

浏览数:517

2019-2-21

这真是黑科技啊,原来推送的广告邮件就是这样产生的。好人用来发节日贺卡,给女朋友纪念邮件;坏人会学着发广告,垃圾邮件。我希望大家能学会了做些有趣的有意义的事情。

今天我带大家实现下简单的发邮件功能。我们要使用到email和smtplib库,实现环境python3.5.

首先我们要知道用python代理登录qq邮箱发邮件,是需要更改自己qq邮箱设置的。在这里大家需要做两件事情:邮箱开启SMTP功能 、获得授权码 教程链接

之后我们来看看如何更改模板代码,实现使用Python登录QQ邮箱发送QQ邮件。

我们先附上最简单的代码

from email.mime.text import MIMEText
from email.header import Header
from smtplib import SMTP_SSL


#qq邮箱smtp服务器
host_server = 'smtp.qq.com'
#sender_qq为发件人的qq号码
sender_qq = '3723358***'
#pwd为qq邮箱的授权码
pwd = '**iao***lxpic***'
#发件人的邮箱
sender_qq_mail = '3723358***@qq.com'
#收件人邮箱
receiver = 'thunder***@gmail.com'
#邮件的正文内容
mail_content = '你好,我是来自知乎的[邓旭东HIT] ,现在在进行一项用python登录qq邮箱发邮件的测试'
#邮件标题
mail_title = '邓旭东HIT 的邮件'

#ssl登录
smtp = SMTP_SSL(host_server)
#set_debuglevel()是用来调试的。参数值为1表示开启调试模式,参数值为0关闭调试模式
smtp.set_debuglevel(1)
smtp.ehlo(host_server)
smtp.login(sender_qq, pwd)

msg = MIMEText(mail_content, "plain", 'utf-8')
msg["Subject"] = Header(mail_title, 'utf-8')
msg["From"] = sender_qq_mail
msg["To"] = receiver
smtp.sendmail(sender_qq_mail, receiver, msg.as_string())
smtp.quit()

只需要更改host_server 、sender_qq、pwd、sender_qq_mail、receiver、mail_content、mail_title等数据,就可以实现简单的发送任务。

但是上面的代码如果只是用来给一个收件人发一次还好,如果收件人数以千计,发送的内容各一,重复写代码太麻烦。下面是我更改后的代码

from email.mime.text import MIMEText
from email.header import Header
from smtplib import SMTP_SSL


#sender_qq为发件人的qq号码
sender_qq = '3723358***'
#pwd为qq邮箱的授权码
pwd = '**iao***lxpic***'
#收件人邮箱receiver
receiver='thunder***@gmail.com'
#邮件的正文内容
mail_content = '你好,我是来自知乎的[邓旭东HIT] ,现在在进行一项用python登录qq邮箱发邮件的测试'
#邮件标题
mail_title = '邓旭东HIT 的邮件'

def send_mail(sender_qq='',pwd='',\
receiver='',mail_title='',mail_content=''):
# qq邮箱smtp服务器
host_server = 'smtp.qq.com'
sender_qq_mail = sender_qq+'@qq.com'

#ssl登录
smtp = SMTP_SSL(host_server)
#set_debuglevel()是用来调试的。参数值为1表示开启调试模式,参数值为0关闭调试模式
smtp.set_debuglevel(1)
smtp.ehlo(host_server)
smtp.login(sender_qq, pwd)

msg = MIMEText(mail_content, "plain", 'utf-8')
msg["Subject"] = Header(mail_title, 'utf-8')
msg["From"] = sender_qq_mail
msg["To"] = receiver
smtp.sendmail(sender_qq_mail, receiver, msg.as_string())
smtp.quit()


for i in range(10):
send_mail(sender_qq=sender_qq,pwd=pwd,\
receiver=receiver,mail_title=mail_title,\
mail_content=mail_content)

注意MIMEText函数中的第二个参数为“plain”时,发送的是text文本。如果为“html”,则能发送网页格式文本邮件。

msg = MIMEText(mail_content, "plain", 'utf-8')

作者:邓旭东

博客专栏:邓旭东HIT的博客专栏

欢迎关注 简书账号 邓旭东HIT

知乎: 邓旭东HIT
微信公众号 文科生也能玩转python

大家也可以加小编微信:tszhihu (备注:Python),拉大家到 Python爱好者社区 微信群,可以跟各位老师互相交流。谢谢。第一时间获取视频更新动态。

也可以关注官方微信公众号:Python爱好者社区

免费活动友情提醒: 3月16号崔庆才老师视频直播分享:爬取知乎所有用户详细信息 爬取知乎所有用户详细信息 (1. 分析知乎Ajax请求及爬取逻辑 2. 用Scrapy实现递归爬取 3. 爬取结果存储到MongoDB ) 欢迎报名参与!!!