,,Python如何实现自动发送邮件

,,Python如何实现自动发送邮件

对于一些需要每天发送的报表或者需要一次发送多个报表,可以考虑使用Python自动发送邮件。本文主要介绍如何使用Python实现邮件的自动发送。感兴趣的朋友可以看看。

目录

自动发送电子邮件使用电子邮件的第一步是正式发送一封电子邮件,并批量发送电子邮件。

自动发送邮件

我们做出报告后,通常需要发送给其他人查看。对于一些需要每天发送的报表或者需要一次发送多个报表,这个时候可以考虑使用Python自动发送邮件。

使用邮箱的第一步

一般我们在使用QQ邮箱、163邮箱、126邮箱等常用邮箱时,只需要输入账号和密码即可。但在手机上使用企业邮箱时,一般需要配置。常规配置界面如下:

除了输入账号密码,还需要输入一个服务器链接地址,每个公司会有所不同。

一份邮件的组成

下图是在outlook中发送邮件的界面,主要包括发件人、收件人、抄送、主题、正文和附件。这也是一般邮件的常见部分。

如何发送邮件?

在发送邮件之前,您需要连接服务器。在Python中,smtplib模块主要用于建立服务器的连接和断开。

不同邮箱的服务器链接地址不同,可以根据自己使用的邮箱设置相应的服务器链接。下表显示了与常见邮箱对应的服务器链接:

邮筒

服务器地址

新浪邮件

smtp.sina.com

搜狐邮箱

smtp.sohu.com

26邮箱

smtp.126.com

139邮箱

smtp.139.com

13网易邮箱

smtp.163.com

在连接163邮箱服务器之前,您需要登录您的163邮箱进行授权设置。授权码设置如下:

在设置中点击POP3/SMTP/IMAP,勾选SMTP服务,根据是设置授权码。成功设置授权后,使用Python中的授权码而不是您的原始电子邮件密码登录。如果您使用原始电子邮件密码登录,将会出现错误。

建立连接后,您可以使用您的帐户密码登录。成功登录后,您可以编辑邮件内容。编辑完成后,可以点击发送。发送后,断开服务器链接。

以下是发送消息的简短流程代码:

导入smtplib

smtp=smtplib。SMTP()

Smtp.connect(主机,端口)#连接到服务器。

Smtp.set_debuglevel(1) #显示交互信息

Smtp.login(用户名、密码)#登录邮箱

Smtp.sendmail (sender,receiver,msg.as _ string ()) #发送邮件

Smtp.quit() #断开连接

正式发送一份邮件

以下面163个邮箱为例,展示发送邮件的完整Python代码:

导入smtplib

从email.mime.multipart导入MIMEMultipart

从电子邮件导入编码器

from email.header导入标题

从email.mime.text导入MIMEText

从email.utils导入parseaddr,formataddr

从email.mime.application导入MIMEApplication

#发件人的邮箱

a sender=' zhangjunhongdata @ 163 . com '

#收件人邮箱

are ceiver=' Zhang junhong @ 163 . com '

#抄送电子邮件地址

acc='张军红@qq.com '

#邮件主题

Asubject='这是一封测试电子邮件'

#发件人地址

from _ addr=' zhangjunhongdata @ 163 . com '

#邮箱密码(授权码)

密码=' 123数据'

#邮件设置

msg=MIMEMultipart()

msg['Subject']=主题

消息['收件人']=收件人

消息['抄送']=acc

Msg['from']='张洪钧'

#邮件正文

Body='您好,这是一封测试邮件'

#添加邮件正文:

msg.attach(MIMEText(body,' plain ',' utf-8 '))

#添加附件

#注意,这里的文件路径是斜杠

XL part=mime application(open(' c:/users/Zhang junhong/desktop/这是附件。xlsx ',' rb ')。read())

XL part . add _ header(' content-disposition ','附件',filename='这是附件。xlsx’)

msg.attach(xlsxpart)

#设置邮箱服务器地址和端口。

smtp_server='smtp.163.com '

server=smtplib。SMTP(smtp_server,25)

server.set_debuglevel(1)

#登录邮箱

server.login(发件人地址,密码)

#发送邮件

server.sendmail(from_addr,areceiver.split(',')acc.split(','),msg.as_string())

#断开服务器链接

server.quit()

最终结果如下:

有一些关于自动邮件的高级内容,比如普通邮件,在文本中显示html内容等。有兴趣的话可以在网上搜索学习。

批量发送邮件

如果你需要同时发送多封邮件,你可以把收件人整理成一个表格循环发送。

例如,我们现在需要将本月的销售任务发送给销售部门的数百名销售人员。发送邮件时,主题应命名为xxx任务详情,正文中的地址应改为对应的收件人。附件应添加他们的任务细节,并抄送给他们的直接上级。

根据以上需求,我们编制了以下与收件人信息相关的表格df:

(全名)

承销人

抄送人

张一声

zhangjunhong11@163.com

zhangjunhong@163.com

张2

zhangjunhong22@163.com

zhangjunhong@163.com

只需要写一个for循环来遍历这个df表中的信息,然后单独发出去。具体实现代码如下:

导入smtplib

从email.mime.multipart导入MIMEMultipart

从email.mime.text导入MIMEText

从email.mime.image导入MIMEImage

从email.mime.application导入MIMEApplication

host='smtp.163.com '

端口=25

username=' Zhang jun hong 1227 @ 163 . com '

密码='123zjh '

Smtp=smtplib。SMTP() #声明一个链接对象

Smtp.connect(主机,端口)#连接到服务器。

Smtp.set_debuglevel(1) #显示交互信息

Smtp.login(用户名、密码)#登录邮箱

发件人=用户名

对于i in zip(df['姓名'],df['收件人'],df['抄送']):

Receiver=i[1] #收件人

Acc=i[2] # cc

Msg=MIMEMultipart() #声明一个邮件对象

消息['发件人]=用户名#发件人

消息['收件人']=收件人编号

消息['抄送']=acc # cc

Msg['Subject']=i[0]'任务详细信息' # subject

#写正文

Text=MIMEText(i[0]'您好,这是您本月的任务详细信息',' plain ',' utf-8 ')

msg.attach(文本)

#添加表格附件

f=open(' c:/users/张俊宏/desktop/task details /' i[0]'。xlsx ',' rb ')。阅读()

filepart=MIMEApplication(f)

part . Add _ header(' content-disposition ',' attachment ',filename=I[0]' task details . xlsx ')#为附件添加标题。

msg.attach(文件部分)

Smtp.sendmail (sender,receiver.split(',')acc.split(','),msg.as _ string ()) #发送邮件

Smtp.quit() #断开连接

通过运行上面的代码,可以达到一次性以df的形式给大家发邮件的要求。

这就是Python如何自动发送电子邮件的细节。更多关于Python发送邮件的信息,请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: