用户:
少年编程狂查看:7 回复:9 评论:7 创建时间:2020-04-22T16:29:29
【极客小课堂】如何用Python优雅的群发邮件
忙里偷闲更一期,希望看的人多点
E-mail相信大家都不陌生,今天教大家如何用万金油语言Python来发邮件
(本片均为实货)
我们需要库喵tplib,使用一下指令安装
pip install 喵tplib
(喵tplib有很多附带库,请大家耐心下完)
敲黑板
喵tp是一个邮件协议,他并不是默认支持的。大家需要在邮箱管理界面
账号 - Pop3/Imap/喵tp中勾选喵tp选项,需要验证码验证哦
此时你会获得一串口令,这个也就是密码(>^ω^<)喵
实际操作
1.导入
#SMTPMailServer Init
from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
import 喵tplib
(这里作者打了个汽水隔)
2.配置
mailServer_from_addr = 'You Mail Adress'
mailServer_password = 'You Mail Password'
mailServer_to_addr = 'The Mail To'
mailServer_喵tp_server = "SMTP SERVER ADRESS"
You Mail Adress 是你的邮箱地址,这个地方其实是有争议的....
例如用Q邮可以控制我FoxMail的邮件.....
You Mail Password是上面我们获取的邮箱口令,这里建议大家用独立的文件存起来再读取。容易被心机
多的同学看到(例如我),拥有口令基本就控制邮箱了。云盘里不可告人的秘密(代码,照片)就不保了。而且邮箱也用于十分重要的验证环节:Github,cloudflare,甚至是QQ登入验证。所以请各位在写代码时保管好自己的代码
TheMail To是收件者的地址,可以拿我的snbckcode@gmail试试
SMTP SERVER ADRESS是SMTP服务器地址,在邮箱管理界面可以看到,例如Q邮就是喵tp.qq.com
3.实例
mailserver = 喵tplib.SMTP(mailServer_喵tp_server, 25)
我们通过Socket连上了小马哥的服务器
4.登入
mailserver.login(mailServer_from_addr, mailServer_password)
mailserver.set_debuglevel(1)
我们通过实现创建好的maiserver.实例中的login()方法登入到服务器
5.构建
def PostMail(text,To,Subject,To_name):
mailServer_to_addr = str(To)
mailServer_msg = MIMEText(str(text), 'html', 'utf-8')
mailServer_msg['From'] = _format_addr('GeekPay网站 <%s>' % mailServer_from_addr)
mailServer_msg['To'] = _format_addr(To_name + ''' <%s>' % mailServer_to_addr''')
mailServer_msg['Subject'] = Header('[GeekPay网站]' + str(Subject), 'utf-8').encode()
mailserver.sendmail(mailServer_from_addr, [mailServer_to_addr], mailServer_msg.as_string())
我们def了一个PostMail函数,并且定义一个字典mailServer_msg,字典中有三个键对分别是文本(已设置为h5格式),收件人,邮件主题(标题),收件人昵称。你肯定要问里面出现了一个__format_addr函数是从哪里来的???抱歉他迟到了
__format_addr()
def _format_addr(s):
name, addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(), addr))
我们将三个参数分别放进mailServer_msg字典里,用sendmail()函数推送!
调用
#发送运行报告
PostMail('<h3>PythonSMTP测试</h3>'喵'测试SMTP','雷电猴')
结果
测试SMTP
发件人:自律、突破<bcmjike@foxmail.com>
时 间:2020年4月22日(星期三) 下午4:21
收件人:雷电猴<2530173083@qq.com>; 自律、突破<bcmjike@foxmail.com> <h3>PythonSMTP测试</h3> (的确发送成功了,还成功打扰到了猴急,Sorry)
总结
其实发送邮件的应用很多,在生活中无处不在。例如你可以用邮件系统做出订阅应用
例如用户订阅你的博客,我们就可以把博客迅速发给每一个订阅的人
或者是网站的注册,修改密码
群发提醒疫情情况,天气等
或者将最新的软件及时发送到用户手里
这期再见,拜拜┏(^0^)┛

极客室长 推送了分支
Index 到代码仓库:
GeekPay
jkstudio :
[26dd19f]
增加当前版本.exe打包 14:05
极客室长 推送了分支
Index 到代码仓库:
GeekPay
jkstudio :
[67ef19f]
加入邮箱功能和部分优化 09:43
极客室长 从代码仓库
GeekPay 删除了分支:etst [a752喵5] 09:42
极客室长 从代码仓库
GeekPay 删除了分支:master [bb9f989] 09:41
极客室长 推送了新的分支
Index 到代码仓库:
GeekPay 02:17
极客室长 推送了分支
master 到代码仓库:
GeekPay
jkstudio :
[bb9f989]
删除不必要的文件以及增加新功能(不可用版本)
2020-04-19 星期日 22:29

from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr点赞0
评论