原文地址

百本PDF下载分享

·
·
·

Python自动批量发送邮件是一种什么体验?

自己写代码实现邮件发送,再也不用可视化那么麻烦了!-LMLPHP

前言

很多时候,我们在发送一些邮件信息的时候,在可视化的界面巴拉巴拉操作一顿,其实就是一些很简单的信息,然后可能发送的收信者比较多,带来很多的麻烦,主要是浪费了我们的时间!

准备工作

很重要重要重要的准备工作,带你进入代码发送邮件的氛围!

进行正题!!!!!

自动化发邮件之前,首先需要用到的两个重要的 Python 模块:smtplib 和 email

我用的是python2.7版本,所以安装这两个库:

pip2.7 install secure-smtplib
pip2.7 install email

安装准备好需要的包,下面就开始发送邮件的操作,实例化操作

# 实例化SMTP
smtp = smtplib.SMTP()
# 链接邮件服务器
smtp.connect(smtp_addr)
# 配置发送邮箱的用户名和密码
smtp.login(login_user, login_passwd)

MIMEText 类是 MIMENonMultipart 类的子类,一般用于用于封装文本类型的邮件

实例化邮件服务器信息,可以进行相应的配置,邮件的标题、邮件的收发邮件信息、当然还可以进行抄送

# 邮件正文
words = "First Message"
# 配置发送内容msg
msg = MIMEText(words, 'plain', 'utf-8')
# 邮件标题
msg['Subject'] = Header("MyTestTitle",'utf-8')
# 发信人地址
msg['from'] = sender
# 收信人地址(支持群发)
msg['to'] = ';'.join([receiver])
# 抄送人地址(支持群发)
msg['Cc'] = ';'.join([receiver])

在完成了以上的操作之后,然后配置自己的信息就可以进行操作发送了。

当然在我给到的代码中,都是以变量给出的,首先咱们需要初始化

# 发送者邮箱(改为自己的)
sender = "[email protected]"
# 接受者邮箱(改为自己的)
receiver = "[email protected]"
# 服务器地址
smtp_addr = "smtp.163.com"
# 邮件服务器账号和密码,自己的163邮箱的登录账号和密码
login_user = "[email protected]"
login_passwd = "xxx"

最后,关键一步,可以发送了,但是记得要关闭连接哦!

参数格式:sendmail(self, from_addr, to_addrs, msg, mail_options=[], rcpt_options=[])

# 发送邮件
smtp.sendmail(sender, receiver, msg.as_string())
smtp.quit()
print("邮件发送成功 ^_^ ")

哈哈,看看我的界面,已经收到了哈!

自己写代码实现邮件发送,再也不用可视化那么麻烦了!-LMLPHP

跟着试了的同学以及攻城狮们,成功了没有

需要我发送代码的,给我留言哈,可以公号后台私信我吆!!

也可以自取哈!地址: https://pan.baidu.com/s/1At5rsu59QZ0BLQ6ETpPEvw 密码: s8ew

发送其他格式的邮件

上述展示了普通格式的邮件发送格式,下面咱们再看看想要发送一些HTML格式的,还有带附件的邮件形式。

再然后就可以自行发挥发送任何格式和组合的邮件了!

1. 发送 HTML 格式的邮件

在创建 MIMEText 时,将 _subtype 设置为 “html”,则可发送 html 格式的邮件

其他步骤和发送纯文本邮件配置和代码格式都一致

跟上面文本格式邮件对比下哈,会有很清晰的思路:

# 普通文本格式
msg = MIMEText(words, 'plain', 'utf-8')
# html 格式
msg = MIMEText(words, 'plain', 'utf-8')

贴出详细代码

# 邮件正文
words = """
<html>
    <head>
        <meta charset="UTF-8">
    </head>
    <body>
	<table border="1">
	    <tr>
	        <th>Python</th>
	        <th>编程爱好者</th>
	    </tr>
	    <tr>
	        <td>需要代码的同学</td>
	        <td>加我微信</td>
	    </tr>
	    <tr>
	        <td>Johngo106X</td>
	        <td>双手奉上!</td>
	    </tr>
	</table>
    </body>
</html>
"""
# 配置发送内容msg
msg = MIMEText(words, 'html', 'utf-8')
# 邮件标题
msg['Subject'] = Header("测试发送HTML信息",'utf-8')
# 发信人地址
msg['from'] = sender
# 收信人地址(支持群发)
msg['to'] = ';'.join([receiver])
# 抄送人地址(支持群发)
msg['Cc'] = ';'.join([receiver])

# 实例化SMTP
smtp = smtplib.SMTP()
# 链接邮件服务器
smtp.connect(smtp_addr)
# 配置发送邮箱的用户名和密码
smtp.login(login_user, login_passwd)
# 发送邮件
smtp.sendmail(sender, receiver, msg.as_string())
smtp.quit()
print("邮件发送成功!")

一些自定义的变量可以自己设置哈,全量代码可以在网盘中自取!!!

哈, 再看看 Johngo 的结果:

自己写代码实现邮件发送,再也不用可视化那么麻烦了!-LMLPHP

下面再看看重要的附件,是怎么操作的

2. 发送带有附件的邮件

类似的操作方法,不同的操作是实例化发送信息的这块稍有区别

# 配置发送内容msg
msg = MIMEMultipart()

同样的我先把代码附上,需要详细代码的请自取

# 邮件正文
words = """
<html>
    <head>
        <meta charset="UTF-8">
    </head>
    <body>
	<table border="1">
	    <tr>
	        <th>Python</th>
	        <th>编程爱好者</th>
	    </tr>
	    <tr>
	        <td>需要代码的同学</td>
	        <td>加我微信</td>
	    </tr>
	    <tr>
	        <td>Johngo106X</td>
	        <td>双手奉上!</td>
	    </tr>
	    <tr>
	        <td>原文链接</td>
	        <td>xxx</td>
	    </tr>
	</table>
    </body>
</html>
"""
# 配置发送内容msg
msg = MIMEMultipart()
# 邮件正文
msg.attach(payload=MIMEText(words, _subtype="html", _charset="utf-8"))
# 邮件标题
msg['Subject'] = Header("附件邮件发送测试",'utf-8')
# 发信人地址
msg['from'] = sender
# 收信人地址(支持群发)
msg['to'] = ';'.join([receiver])
# 抄送人地址(支持群发)
msg['Cc'] = ';'.join([receiver])


for file_path in {"test1.xlsx", "test2.xlsx"}:
	attachment = MIMEText(_text=open(file_path, "rb").read(), _subtype="base64", _charset="utf-8")
	attachment["Content-Type"] = "application/octet-stream"
	attachment["Content-Disposition"] = "attachment; filename=%s" % file_path
	msg.attach(payload=attachment)


# 实例化SMTP
smtp = smtplib.SMTP()
# 链接邮件服务器
smtp.connect(smtp_addr)
# 配置发送邮箱的用户名和密码
smtp.login(login_user, login_passwd)
# 发送邮件
smtp.sendmail(sender, receiver, msg.as_string())
smtp.quit()
print("邮件发送成功!")

同样的,咱们看看附件过来了没有

自己写代码实现邮件发送,再也不用可视化那么麻烦了!-LMLPHP

End

比较简单的几行代码,在某些时候就可以将事情事半功倍,适用于定时发邮件、快速自定义的发送相同文件内容的场景

代码先放到网盘,就暂且不往github上传了,地址链接: https://pan.baidu.com/s/1At5rsu59QZ0BLQ6ETpPEvw 密码: s8ew,自取哈!!

另外,我给到的是最基本的 Python 自定义发送邮件的操作,拿到手的同学和攻城狮们可以进行再次封装,更加好用一些。同时也可以分享出来

好了,今天就是有关自定义发送邮件小工具的全部分享内容了,如果感觉对你有些许帮助,还请轻轻点击转发,让更多的人看到,对 Johngo 来说,有莫大的帮助!

文中有任何错误的地方,烦请不吝赐教。非常感谢!

02-16 17:06