参考:
Python-100-Days/14.网络编程入门和网络应用开发.md at master · jackfrued/Python-100-Days · GitHub
什么是授权码,它又是如何设置?_QQ邮箱帮助中心
windows中怎么添加定时任务 - 秋寻草 - 博客园 (cnblogs.com)
一、申请授权码
登陆qq邮箱,设置,账户,(往下找)POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,
开启服务:POP3/SMTP服务 。手机验证后得到16位授权码,复制下来后面要用。
详情见:什么是授权码,它又是如何设置?_QQ邮箱帮助中心
二、使用SMTP发送邮件
将下面程序的发件人、收件人、等修改,修改完成后运行即可发送邮件。
from smtplib import SMTP from email.header import Header from email.mime.text import MIMEText def main(): # 请自行修改下面的邮件发送者和接收者 #【发送者邮箱】 sender = 'abcdefg@126.com' #【接受者邮箱】 receivers = ['uvwxyz@qq.com', 'uvwxyz@126.com'] #【邮件内容】 message = MIMEText('用Python发送邮件的示例代码.', 'plain', 'utf-8') #【发件人】 message['From'] = Header('王大锤', 'utf-8') #【收件人】 message['To'] = Header('骆昊', 'utf-8') #【邮件主题】 message['Subject'] = Header('示例代码实验邮件', 'utf-8') smtper = SMTP('smtp.qq.com') #【将secretpass改成自己的16位授权码】 smtper.login(sender, 'secretpass') smtper.sendmail(sender, receivers, message.as_string()) print('邮件发送完成!') if __name__ == '__main__': main()
三、在window中开启定时任务
1、Windows键+R,调出此窗口,输入compmgmt.msc
2、右键任务计划程序,选择创建基本任务。按提示填写,注意启动程序这里,程序写Python解释器路径,参数写上面的邮件脚本,起始于写脚本所在路径
四、带附件的 邮件
from smtplib import SMTP from email.header import Header from email.mime.text import MIMEText from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart import urllib def main(): # 创建一个带附件的邮件消息对象 message = MIMEMultipart() # 创建文本内容 text_content = MIMEText('附件中有本月数据请查收', 'plain', 'utf-8') message['Subject'] = Header('本月数据', 'utf-8') # 将文本内容添加到邮件消息对象中 message.attach(text_content) # 读取文件并将文件作为附件添加到邮件消息对象中 with open('/Users/Hao/Desktop/hello.txt', 'rb') as f: txt = MIMEText(f.read(), 'base64', 'utf-8') txt['Content-Type'] = 'text/plain' txt['Content-Disposition'] = 'attachment; filename=hello.txt' message.attach(txt) # 读取文件并将文件作为附件添加到邮件消息对象中 with open('/Users/Hao/Desktop/汇总数据.xlsx', 'rb') as f: xls = MIMEText(f.read(), 'base64', 'utf-8') xls['Content-Type'] = 'application/vnd.ms-excel' xls['Content-Disposition'] = 'attachment; filename=month-data.xlsx' message.attach(xls) # 创建SMTP对象 smtper = SMTP('smtp.126.com') # 开启安全连接 # smtper.starttls() sender = 'abcdefg@126.com' receivers = ['uvwxyz@qq.com'] # 登录到SMTP服务器 # 请注意此处不是使用密码而是邮件客户端授权码进行登录 # 对此有疑问的读者可以联系自己使用的邮件服务器客服 smtper.login(sender, 'secretpass') # 发送邮件 smtper.sendmail(sender, receivers, message.as_string()) # 与邮件服务器断开连接 smtper.quit() print('发送完成!') if __name__ == '__main__': main()