python自建邮件服务器,9行自定义函数教你用Python发送电子邮件!

作者 l 刘顺祥

来源 l 数据分析1480

前言

大概是在两三个月前,陆续有几位在职朋友问我如何使用Python发送邮件,说心里话这方面的操作在我之前的工作履历中真的没有碰到,所以我没有很好地帮助他们。但这个问题一直埋在我的心底,如果将来我也碰到了这个问题怎么办?总不能临时抱佛脚吧,必须得未雨绸缪。所以这一段时间里,一旦有空就翻翻资料,查查google,写写测试代码,今天就简单分享一下我的所学所得(真的不骗你,只需9行的自定义函数!)。

信息准备

发生邮件前必须准备好一些基本信息,例如发件人邮箱地址、发件人邮箱密码、收件人邮箱地址、发件人昵称、收件人昵称、邮件主题以及邮件内容等。这些内容都属于定制化的,那么剩余的就应该是邮件发送了。使用Python发送邮件需要使用到email模块(主要用于邮件的配置)和smtplib模块(用于邮件的发送),接下来我们动手搞起吧!(这里以我的QQ邮箱为例,向其他邮件发送内容。)

# 导入第三方模块

importsmtplib

fromemail.mime.textimportMIMEText

fromemail.utilsimportformataddr

# 自定义发送邮件的函数

'''

配置发邮件所需的基础信息

my_sender # 配置发件人邮箱地址

my_pass # 配置发件人邮箱密码

to_user # 配置收件人邮箱地址

my_nick # 配置发件人昵称

to_nick # 配置收件人昵称

mail_msg # 配置邮件内容

'''

defmail(my_sender,my_pass,to_user,my_nick,to_nick,mail_msg):

# 必须将邮件内容做一次MIME的转换 -- 这是发送含链接的邮件

msg=MIMEText(mail_msg,'html','utf-8')

# 配置发件人名称和邮箱地址

msg['From']=formataddr([my_nick,my_sender])

# 配置收件件人名称和邮箱地址

msg['To']=formataddr([to_nick,to_user])

# 配置邮件主题(标题)

msg['Subject']="发送邮件测试"

# 配置Python与邮件的SMTP服务器的连接通道(如果不是QQ邮箱,SMTP服务器是需要修改的)

server=smtplib.SMTP_SSL("smtp.qq.com",465)

# 模拟登陆

server.login(my_sender, my_pass)

# 邮件内容的发送

server.sendmail(my_sender,[to_user,],msg.as_string())

# 关闭连接通道

server.quit()

考虑到大家对代码的理解,我在自定义函数中都配备相应的注解,大家如果还有哪些不明白的地方可以给我留言。需要注意的是,如果你也使用QQ邮箱做测试,必须配置第三方客户端邮箱的授权码,否则邮件是发布出去的。

授权码的配置

第一步:登录自己的QQ邮箱;

第二步:点击邮箱中的【设置】,进入【帐户】栏,下拉你会看见如下的截图:

962db4afc47c5f7de931210ed17a1d17.png

第三步:点击图中的【开启】,根据下图的提示,发送短信,你将会获得授权码(这个授权码用于配置自定义函数mail中的my_pass参数)。

ca395adb263b05c132077fa805554eac.png

邮件测试

如果上面的授权码都配置OK了,就可以使用上面的9行自定义函数,快乐地测试起来啦!这里以qq邮箱作为发送方,以我的163邮箱作为接收方,代码如下:

try:

mail_msg ="""

尊敬的刘顺祥:

您好,非常抱歉打扰到您,这是一份Python 的邮件测试,看见后可以忽略。

2个多月近600页的数据分析与挖掘PPT分享给您!

"""

# 调用函数(登录密码需要换成你自己的)

mail('1029776077@qq.com','kjwpzipnmbfbb','lsxxx2011@163.com','刘顺祥','刘顺祥',mail_msg)

print('邮件发送成功!')

except:

print('邮件发送失败!')

如果不出意外的话,函数的运行结果将是“邮件发送成功!”,然后回到我的163邮箱,将会是看见这样的效果:

d6c4a00069e547ca6d6a95e6533603ed.png

批量发送

你可能会觉得,发一份邮件有这么麻烦吗?我直接登录邮箱发送就是啦。可问题时,工作场景中可能需要向目标客户发送批量邮件,此时你再通过手动方式,效率就显得渣渣啦。要想实现邮件的批量发送,最容易想到的就应该是for循环啦。这里跟朋友要了邮箱做为测试,代码如下:

# 配置发邮件所需的基础信息

my_sender='1029776077@qq.com'

my_pass ='kjwpzoozipnmbfbb'

to_user=['lsxxx2011@163.com','179*****66@qq.com','93*****89@qq.com']

my_nick ='刘顺祥'

to_nick = ['刘顺祥','沈**','陈**']

foriinrange(3):

# 配置邮件内容

mail_msg ="""

尊敬的{}:

您好,非常抱歉打扰到您,这是一份Python 的邮件测试,看见后可以忽略。

2个多月近600页的数据分析与挖掘PPT分享给您!

""".format(to_nick[i])

# 调用函数

try:

mail(my_sender,my_pass,to_user[i],my_nick,to_nick[i],mail_msg)

print('邮件发送成功!')

except:

print('邮件发送失败!')

惊喜不断,全都发送成功,而且速度也非常的快,三份邮件的发送,估计就1秒钟左右吧。效果是这样的:

2f7910247ee2208641a1d6bd555d3b80.png

cdf16536491ac6c1be656c852e942f61.png

结语

OK,今天的内容就分享到这里,如果你有任何问题,欢迎在公众号的留言区域表达你的疑问。同时,也欢迎各位大咖在留言区分享你们自己的策略,我会第一时间将你的留言分享给大家。

最后,祝有所学习,有所成长

转发,好看支持一下,感谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值