原标题:自动邮件发送_任何情况立刻通知你
Python自动邮件发送
在日常工作中,我们经常需要收发邮件,不知大家可曾想过,如果能够实现自动发送,那岂不是爽歪歪~
就像跑图像检测的模型经常跑一两天,如果经常要主动去查看模型进度还是太麻烦了~如果能够实现自动邮件发送,等报表生成后、模型运行结束后或者遇到异常情况就能实现自动邮件通知,岂不是不要太方便?!
今天给大家分享一下如何使用Python实现自动发送邮件。
在实现自动化发送邮件前,先简单介绍一下需要使用到的两个模块:smtplib和email。
smtplib模块主要用来建立服务器链接、服务器断开的工作;
email模块主要负责邮件的构建,比如收件人、邮件标题、邮件内容等。
1. 链接邮箱服务器
在发送邮件前,需要先使用smtplib模块链接邮箱服务器,此处以连接腾讯企业邮箱为例,代码如下:
# 实例化SMTP
smtp = smtplib.SMTP
# 链接邮件服务器
smtp.connect("smtp.exmail.qq.com")
# 配置发送邮箱的用户名和密码
smtp.login("huojc@create80.com", "123456")2. 配置邮件信息
邮件服务器链接完成后,我们就可以配置发送邮件的信息了,其中包括邮件发送的内容、收件人和抄送人信息、附件内容。配置代码如下:
# 配置发送内容msg
msg = MIMEMultipart
msg.attach(MIMEText("test11",_subtype='html',_charset='utf-8'))
msg['Subject'] = Header("testtitle",'utf-8')
msg['From'] = "huojc@create80.com"
# 添加发送人邮件信息(支持群发)
msg['To'] = ';'.join(["huojc@create80.com"])
# 添加抄送人邮件信息
msg['Cc'] = ';'.join(["huojc@create80.com"]) # 抄送邮箱
# 添加附件信息(可包含多个附件)
for a_path in ['D:/test1.txt','D:/test2.docx']:
name = os.path.basename(a_path) # 获取附件文件名
part = MIMEApplication(open(a_path,'rb').read)
part.add_header("Content-Disposition", "attachment", filename=("gbk", "", str(name))) # 可以显示附件的中文名字
msg.attach(part)3. 发送邮件
完成了上面的操作后,就可以进行邮件的发送,在发送完邮件后,需要关闭邮件服务。
# 发送邮件
smtp.sendmail('huojc@create80.com','huojc@create80.com',msg.as_string)
# 关闭邮件服务
smtp.quit
为了方便使用,将上面的代码封装成send_email函数
def send_email(SMTP_host, from_account, from_password, to_account, Cc_email,subject, content,attachment_path):
函数中的参数说明如下:
SMTP_host:指定连接的邮箱服务器,常用邮箱的smtp服务器地址如下:新浪邮箱:smtp.sina.com, 搜狐邮箱:smtp.sohu.com 139邮箱:smtp.139.com 163网易邮箱:smtp.163.com 腾讯企业邮箱:smtp.exmail.qq.com
from_account:发送邮箱的账号
from_password:发送邮箱的密码
to_account:接收邮箱名
Cc_email:抄送邮箱名
subject:发送邮件的标题
content:发送邮件的内容
attachment_path:发送附件的路径
send_email代码如下:
import smtplib
import os
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.header import Header
def send_email(SMTP_host, from_account, from_password, to_account, Cc_email,subject, content,attachment_path):
# 实例化SMTP
smtp = smtplib.SMTP
# 链接邮件服务器
smtp.connect(SMTP_host)
# 配置发送邮箱的用户名和密码
smtp.login(from_account, from_password)
# 配置发送内容msg
msg = MIMEMultipart
msg.attach(MIMEText(content,_subtype='html', _charset='utf-8'))
msg['Subject'] = Header(subject,'utf-8')
msg['From'] = from_account
# 添加发送人邮件信息
msg['To'] = ';'.join(to_account) #群发邮件
# 添加抄送人邮件信息
msg['Cc'] = ';'.join(Cc_email) # 抄送邮箱
# 添加附件信息(包含多个附件)
for a_path in attachment_path:
name = os.path.basename(a_path) # 获取附件文件名
part = MIMEApplication(open(a_path,'rb').read)
part.add_header("Content-Disposition", "attachment", filename=("gbk", "", str(name))) # 可以显示附件的中文名字
msg.attach(part)
# 配置发送邮箱,接受邮箱,以及发送内容
smtp.sendmail(from_account, to_account, msg.as_string)
# 关闭邮件服务
smtp.quit
封装好send_email函数后,我们就可以很方便的发送邮件了,下面以发送邮件到腾讯企业邮箱为例
if __name__ == '__main__':
my_email = 'huojc@create80.com' # 发送邮件的邮箱名
my_email_password = '123456' # 邮箱密码
to_email = ['huojc@create80.com'] # 接收者邮箱,可传入多个
Cc_email = [] # 抄送邮箱,可以传入多个
Email_title = '测试邮件-标题' # 设置发送邮件的标题
Email_content = '测试邮件-内容' # 设置发送邮件的内容
attachment_path = ['D:/邮件发送/p1.jpg','D:/邮件发送/test1.docx','D:/邮件发送/test2.xlsx'] # 附件的路径
# 使用前记得输入邮箱密码
send_email("smtp.exmail.qq.com", my_email, my_email_password, to_email, Cc_email, Email_title, Email_content, attachment_path)
代码运行成功后,发送结果如下所示:
至此,本次分享已结束如果你喜欢的话,可以转发或者点个“在看”支持一下~点击原文链接,可以下载《Python工具代码速查手册》,可以点个star支持一下哦~
简介:浩彬老撕
好玩的数据炼丹师,
曾经的IBM 数据挖掘攻城狮,
还没开始就过气数据科学界的段子手,
致力于数据科学知识分享,不定期送书活动返回搜狐,查看更多
责任编辑: