自动发送电子邮件函数
注意:此函数只有发送文本和附件的两个功能。群发时候有时会被系统检测为垃圾文件,但是把收件人改为网易邮箱,就不会被检测,但是邮件被归类进入网易邮箱的垃圾箱。
def send_email(sender_name,sender_pwd,receiver_name,email_title,email_content,host_server,content_address,add_attachment=False,attachment_name=0,off_quit=True):
"""
参数:
sender_name: 发件人(string).
sender_pwd: 授权码(string).
receiver_name: 收件人(list).
email_title: 邮件主题(string).
email_content: 邮件正文(string).
host_server: 邮箱服务器地址(string).
add_attachment: 是否添加附件,默认为 False.
content_address: 内容地址(list).
attachment_name: 附件命名(list),可以默认.
off_quit: 是否退出登录,默认为 True.
"""
#导入库
import smtplib #操作SMTP协议的库
from smtplib import SMTP #加密邮件内容
from email.mime.text import MIMEText #构建邮件的正文
from email.mime.application import MIMEApplication #添加附加需要打开本地文件
from email.header import Header #邮件头,里面包括邮件标题,收件人等
from email.mime.multipart import MIMEMultipart #封装邮件,构建邮件主体
#向邮件里添加内容
for i_receiver_name in receiver_name:
msg = MIMEMultipart() #初始化邮寄主体
msg["Subject"] = Header(email_title,"utf-8")
msg["From"] = sender_name
msg["To"] = i_receiver_name
msg.attach(MIMEText(email_content,"plain","utf-8")) #邮件内容加入主体中
#向邮箱添加附件
if(add_attachment==True):
if(attachment_name!=0):
for a in [*zip(content_address,attachment_name)]:
attachment = MIMEApplication(open(a[0],"rb").read())#读取本地
attachment.add_header("Content-Disposition","attachment",filename=a[1])
msg.attach(attachment)
else:
i=0
for a in content_address:
attachment = MIMEApplication(open(a,"rb").read())#读取本地
name="这是第"+str(i+1)+"附件"
attachment.add_header("Content-Disposition","attachment",filename=name)
msg.attach(attachment)
#设置邮箱服务器地址及端口
host_server_ = host_server #网易邮箱服务器的地址
smtp = SMTP(host_server_,25)
smtp.set_debuglevel(1)
#登录邮箱
smtp.login(sender_name,sender_pwd)
#发送邮件
for i_receiver_name in receiver_name:
smtp.sendmail(sender_name,i_receiver_name,msg.as_string())
print("发送成功!")
if(off_quit==True): #退出
smtp.quit()
1.本篇所有数据文件小博已上传,需要的小伙伴到“文件”进行下载使用。数据文件纯属学习教学所用,纯属虚构。
2.文章中的代码都是经过小博的真实操作,可以执行。(注:Anaconda3的Jupyter notebook)
浙公网安备 33010602011771号