因为要过年了,新年祝福是少不了的。于是想想能不能根据自己学的python来发送qq邮件
上一篇讲发送qq邮件的在这里:https://blog.csdn.net/hexiechuangxin/article/details/113452579
基本思路如下:
- 批量获取好友的qq号
- 组织想要发送的邮件内容
- 批量发送邮件
下面依次解决。
一.批量获取好友的qq号
一开始在网上搜了一下,没有找到合意的答案。后来我打开qq空间,F12键
找到抓包工具(Network):
之后刷新一下,找到合适的数据包:
在pycharm项目中新建一个文件,把这个数据包复制粘贴进去。
有人可能问我为什么不用点高级的,比如用python爬虫直接爬取这些数据。原因是qq空间是需要登录的,而且它还有拼图的验证码,比较麻烦,还不如我直接复制粘贴快。
之后就是解析这些数据找到qq号了,这个很简单,因为那就是一个字典。懂字典就行。
qq_list = []
qq_name = []
for i in jsondata.jsondata['data']['module_3']['data']['items']:
qq_list.append(i['uin'])
qq_name.append(i['name'])
二.组织想要发送的邮件内容
同样我没有用爬虫爬取而是直接从网上复制粘贴比较快。理由是网上往往一个页面中有关新年祝福的话语比较少(我没有找到合适的网站),如果用爬虫要爬取多个网页才够用。
复制粘贴下来的字符串用列表包装一下就行。
text_list=['祝愿您,新年大展宏图之余:留一点时间多陪陪家人,带一份心情去看看蓝天,携一缕思念常想起朋友,存一丝宁静而处世安然猪年大吉,岁岁平安!',
'春节来临心欢畅,辞旧迎新谱新章。意气风发雄心壮,工作进步领奖状。家庭和睦美名扬,妻贤子孝人夸奖。身体健康美而壮,幸福生活把手扬。祝春节快乐!',
'春节到了,寄出原封不动的信件,将原滋原味的新春祝福,融进原原本本的心愿,愿你在新的一年,爱情圆圆满满,财富源源不断,生活花好月圆。春节快乐!',
'春节到,真热闹,家家团圆乐逍遥;吉祥话,说不完,朋友祝福莫嫌吵;祝愿你,心情好,生活幸福常微笑。祝新年快乐,一切都好!']
三.批量发送邮件
只要会用python发送单个qq邮件,再循环发送就行。
不过我在实际操作过程中发现发送邮件速度太快好像会被封一段时间。所以设置了一个time.sleep(20) 具体休眠多少时间大家自己定吧。
代码:
import random
import smtplib
from email.mime.text import MIMEText # 邮件正文
from email.header import Header # 邮件头
import jsondata
import time
def send_qq_email(text1,qqemail):
smtp_obj=smtplib.SMTP_SSL('smtp.qq.com',465) # 发件人邮箱中的SMTP服务器,端号465
smtp_obj.login("[email protected]","aajpzrkhkfwzdeii") #括号中对应的是发件人的邮箱账号,邮箱秘钥
# 设置邮件头信息
msg=MIMEText(text1,'plain','utf-8') # 正文
msg['From']=Header('和谐创新','utf-8') # 发送者
msg['To']=Header('尊敬的您','utf-8') # 接受者
msg['Subject']=Header('来自zcx的祝福','utf-8') # 主题
# 发送
smtp_obj.sendmail('[email protected]',qqemail,msg.as_string())
def rand_text(text_list):
text = text_list[random.randint(0,4)]
return text;
text_list=['祝愿您,新年大展宏图之余:留一点时间多陪陪家人,带一份心情去看看蓝天,携一缕思念常想起朋友,存一丝宁静而处世安然猪年大吉,岁岁平安!',
'春节来临心欢畅,辞旧迎新谱新章。意气风发雄心壮,工作进步领奖状。家庭和睦美名扬,妻贤子孝人夸奖。身体健康美而壮,幸福生活把手扬。祝春节快乐!',
'春节到了,寄出原封不动的信件,将原滋原味的新春祝福,融进原原本本的心愿,愿你在新的一年,爱情圆圆满满,财富源源不断,生活花好月圆。春节快乐!',
'春节到,真热闹,家家团圆乐逍遥;吉祥话,说不完,朋友祝福莫嫌吵;祝愿你,心情好,生活幸福常微笑。祝新年快乐,一切都好!']
qq_list = []
qq_name = []
for i in jsondata.jsondata['data']['module_3']['data']['items']:
qq_list.append(i['uin'])
qq_name.append(i['name'])
for friend in qq_list:
qqemail = str(friend) + '@qq.com'
qqtext = rand_text(text_list)
try:
send_qq_email(qqtext,qqemail)
print('该朋友发送完毕!邮件为:')
print(qqemail, '\n', qqtext)
except:
print('该朋友邮箱错误!')
time.sleep(20)
print(qq_name)