猫史档案馆


【极客小课堂】如何用Python优雅的群发邮件

用户:少年编程狂少年编程狂查看:64 回复: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^)┛     GeekPay       <input class="cuk-input-2 cuk-input-2-size-default" type="text" placeholder="搜索...">   全部产品 项目设置   项目设置     项目动态 所有成员 所有类型   2020-04-20 星期一 14:26 极客室长 推送了分支  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

 

 

 

emotion_编程猫_加油


回复

上一页第 1 页 / 共 1 页下一页
妄想者mO7f妄想者mO7f

第一

点赞0


评论


妄想者mO7f妄想者mO7f

沙发!!!室长我抢到沙发啦

点赞0


评论

这么快。。我都没看完


妄想者mO7f妄想者mO7f

我用的是py3.8

点赞0


评论


少年编程狂少年编程狂

最后一段我是剧中的,似乎出了bug

啊啊啊,最近看的人好少

点赞0


评论

你们工作室的摩羯哥哥-小龙不认识我


少年编程狂少年编程狂

快钉钉~~~

点赞0


评论


屑小龙屑小龙

天花板……

点赞0


评论

掉地上了

滴呜滴呜


伦敦西区肯辛顿富人区名富商大天才煊伦敦西区肯辛顿富人区名富商大天才煊

from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr

点赞0


评论

ImportError:cannot import name 'encoders'


煤黑烧饼煤黑烧饼

根本不需要pip好不好!python自带!

点赞0


评论

一般来讲再装一遍十分科学


LUS圣武士LUS圣武士

捧场

点赞0


评论

写捧场