温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

python怎么实现自动发送邮件发送多人、群发、多附件

发布时间:2022-05-09 10:48:30 来源:亿速云 阅读:883 作者:zzz 栏目:大数据

本篇内容主要讲解“python怎么实现自动发送邮件发送多人、群发、多附件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python怎么实现自动发送邮件发送多人、群发、多附件”吧!

主要会遇到的几个问题:

1、smtplib。smtpauthenticationerror  :(550,b“用户没有权限”)

2、smtplib。smtpauthenticationerror  :(535,b'Error:验证失败')

这两个错误都是你的密码没有使用授权码导致的,授权码是百度生成的。

3、554 DT:SPM  163 smtp5

这是网易邮箱的一个退货检测机制造成的,好像和频繁发送有关。再发的时候遇到了,直到加了一个网易邮箱作为收件箱才发成功。不知道是不是这个原因,具体原因不明。如果有人知道,请在私信或评论下告诉我。谢谢!

准备检查系统上的python版本号:

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中的执行结果如下

python怎么实现自动发送邮件发送多人、群发、多附件

显示邮件已发送成功,可在对应邮箱查看,对应文件夹下有附件文字

python怎么实现自动发送邮件发送多人、群发、多附件

如果没有附件文字(这是截图的网易邮箱,上面的QQ邮箱表示两个邮箱都收到了邮件):

python怎么实现自动发送邮件发送多人、群发、多附件

到此,相信大家对“python怎么实现自动发送邮件发送多人、群发、多附件”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI