您好,登录后才能下订单哦!
本篇内容主要讲解“python怎么实现自动发送邮件发送多人、群发、多附件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python怎么实现自动发送邮件发送多人、群发、多附件”吧!
主要会遇到的几个问题:
1、smtplib。smtpauthenticationerror :(550,b“用户没有权限”)
2、smtplib。smtpauthenticationerror :(535,b'Error:验证失败')
这两个错误都是你的密码没有使用授权码导致的,授权码是百度生成的。
3、554 DT:SPM 163 smtp5
这是网易邮箱的一个退货检测机制造成的,好像和频繁发送有关。再发的时候遇到了,直到加了一个网易邮箱作为收件箱才发成功。不知道是不是这个原因,具体原因不明。如果有人知道,请在私信或评论下告诉我。谢谢!
准备检查系统上的python版本号:
如图,已经安装好了。
2.实现代码如下(这是在Windows上编辑IDEL下的测试代码,只改变linux上的附件路径)
#-*-coding:utf-8-*-
fromemailimportencoders
importos
importtraceback
fromemail.headerimportHeader
from email . mime . textimport mime text
fromemail.utilsimportparseaddr,formataddr
importsmtplib
from email . mime . MultipimportMimePart
from email . mime . BaseIMPORTMimeBase
fromemailimportencoders
#中文处理
def _ format _ addr :
名称,addr=parseaddr(s)
returnformataddr((标头(名称,' utf-8 ')。encode(),addr))
defsend_email(to_addr_in,filepath_in):
#邮件发送者和接收者配置
from_addr='*******@163.com '
smtp_server='smtp.163.com '
密码=' * * * * * * * * ' #这是您邮箱的第三方授权客户端的密码,不是您的登录密码
to_addr=to_addr_in
to_addrs=to_addr.split(',')
msg=MIMEMultipart()
发件人由消息['from']=_ format _ addr ('python发烧友%s'%from_addr)#
#msg['To']=_format_addr('管理员%s'%to_addr)#单个显示的收件人
消息['收件人']=','。join(to_addrs)#多个显示的收件人
消息['主题']=标题('来自SMTP的问候.',' utf-8 ')。encode () #显示消息头
#要传递的路径
#filepath=r'D:\test '
filepath=filepath_in
r=os.path.exists(filepath)
ifrisFalse:
msg.attach(MIMEText('nofile .)、“普通”、“utf-8”))
else:
#消息正文是MIMEText:
msg . attach(MiMeText(' sendwithfile .)、“普通”、“utf-8”))
#遍历指定的目录并显示该目录下的所有文件名
pathDir=os.listdir(filepath)
forallDirinpathDir:
child=os.path.join(filepath,allDir)
Printchild。解码(' gbk') #。decode ('gbk ')是为了解决中文显示乱码的问题
#添加附件就是添加一个MIMEBase并在本地读取一个文件
withopen(child,' rb')asf:
#设置附件的MIME和文件名,这里是txt类型:
mime=MIMEBase('file ',' xls ',filename=allDir)
#添加必要的标题信息:
mime . add _ header(' Content-Disposition ',' attachment ',filename=allDir)
添加标题('内容标识',' 0 ')
mime . add _ header(' X-附件-Id ',' 0 ')
#阅读:中附件的内容
mime.set_payload(f.read())
#用Base64编码:
encoders.encode_base64(mime)
#添加到MIMEMultipart:
msg.attach(mime)
try:
server=smtplib。SMTP(smtp_server,25)
#server.starttls()
server . set _ debugle level(1)#用于显示邮件发送的执行步骤
server.login(from_addr,password)
#printto_addrs
server.sendmail(from_addr,to _ addrs,msg.as_string())
server.quit()
Exception,e:
打印“错误:无法发送电子邮件”
printtraceback.format _ exc()
if__name__=='__main__':
send _ email(* * * * * * * @ qq.com,* * * * * * @ 163.com ',' d: \ \ test') 3。PyCharm中的执行结果如下
显示邮件已发送成功,可在对应邮箱查看,对应文件夹下有附件文字
如果没有附件文字(这是截图的网易邮箱,上面的QQ邮箱表示两个邮箱都收到了邮件):
到此,相信大家对“python怎么实现自动发送邮件发送多人、群发、多附件”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。