学习笔记
1、导入邮箱发送所需要的包
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
2、初始化邮箱配置
class AutoEmail(object):
def __init__(self):
self.mailserver = "******" # 邮箱服务器地址
self.username_send = '******' # 邮箱用户名
self.password = '******' # 邮箱密码:需要使用授权码
self.username_recv = '******' # 收件人,多个收件人用逗号隔开
# 生成一个空的带附件的邮件实例
self.message = MIMEMultipart()
3、定义一个发送邮件的函数
本例以QQ邮箱,发送xlsx文件为模板
def send_email(self):
# 将正文以text的形式插入邮件中
self.message.attach(MIMEText('报告', 'plain', 'utf-8'))
# 生成发件人名称(这个跟发送的邮件没有关系)
self.message['From'] = Header('工具人', 'utf-8')
# 生成收件人名称(这个跟接收的邮件也没有关系)
self.message['To'] = Header('cc', 'utf-8')
# 生成邮件主题
self.message['Subject'] = Header('日报', 'utf-8')
# 读取附件的内容 path是excel文件路径
att1 = MIMEText(open(path,'rb').read(), 'base64', 'utf-8')
att1.add_header("Content-Type",'application/octet-stream')
# 生成附件的名称
att1.add_header("Content-Disposition",'attachment',filename='测试.xlsx')
# 将附件内容插入邮件中
self.message.attach(att1)
smtp = smtplib.SMTP_SSL('smtp.qq.com', port=465) # QQ邮箱的服务器和端口号
smtp.login(self.username_send, self.password) # 登录邮箱
# 参数分别是发送者,接收者,第三个是把上面的发送邮件的内容变成字符串
smtp.sendmail(self.username_send, self.username_recv, self.message.as_string())
smtp.quit() # 发送完毕后退出smtp
print('success')
4、运行文件
if __name__ == '__main__':
autoemail = AutoEmail()
autoemail.send_email()
5、小结
邮件有可能被当做垃圾邮件处理,需要做好标签避免被过滤了。