Github 大牛封装 Python 代码,实现自动发送邮件只需三行代码


*注意:全文代码可左右滑动观看

在运维开发中,使用 Python 发送邮件是一个非常常见的应用场景。今天一起来探讨一下,GitHub 的大牛门是如何使用 Python 封装发送邮件代码的。

一般发邮件方法

SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。

我们以前在通过Python实现自动化邮件功能的时候是这样的:

import smtplib
from email.mime.text import MIMEText
from email.header import Header
#发送邮件服务器
smtpserver = ‘smtp. sina. com‘
#发送邮件用户/密码
user = ‘usernamee@sina. com‘
password = ‘123456‘
#发送邮件
sender = ‘username@sina. com"
#接收邮件
receiver = ‘receive@126. com‘
#发送邮件主题
subject = ‘Python email test‘
#编写HTML类型的邮件正文
msg = MIMEText(‘<html><h1>你好 ! </h1></html>‘,‘html‘,‘utf-8‘)
msg[‘Subject‘] = Header(subject,‘utf-8‘)
#连接发送邮件
smtp = smtplib.SMTP()
smtp.connect(smtpserver)
smtp.login(user,password)
satp.sendmail(sender, receiver, msg.as_ string())
satp.quit()

python发邮件需要掌握两个模块的用法,smtplib和email,这俩模块是python自带的,只需import即可使用。smtplib模块主要负责发送邮件,email模块主要负责构造邮件。

smtplib模块主要负责发送邮件:是一个发送邮件的动作,连接邮箱服务器,登录邮箱,发送邮件(有发件人,收信人,邮件内容)。

email模块主要负责构造邮件:指的是邮箱页面显示的一些构造,如发件人,收件人,主题,正文,附件等。

其实,这段代码也并不复杂,只要你理解使用过邮箱发送邮件,那么以下问题是你必须要考虑的:

你登录的邮箱帐号/密码

对方的邮箱帐号

邮件内容(标题,正文,附件)

邮箱服务器(SMTP.xxx.com/pop3.xxx.com)

如果要把一个图片嵌入到邮件正文中怎么做?直接在HTML邮件中链接图片地址行不行?答案是,大部分邮件服务商都会自动屏蔽带有外链的图片,因为不知道这些链接是否指向恶意网站。

要把图片嵌入到邮件正文中,我们只需按照发送附件的方式,先把邮件作为附件添加进去,然后,在HTML中通过引用src="cid:0"就可以把附件作为图片嵌入了。如果有多个图片,给它们依次编号,然后引用不同的cid:x即可。

yagmail 实现发邮件

yagmail 可以更简单的来实现自动发邮件功能。

github项目地址: https://github.com/kootenpv/yagmail

代码开源,解释如下:

yag = SMTP(args.user,args.password)
yag.send(to.=args.to,subject=args.subject,contents=args.contents,attachments=args.attachments)

安装:

pip install yagmail

简单例子:

import yagmail
#链接邮件服务器
yag = yagmail.SMTP(user="user@126.com",password="1234",host=‘smtp.126.com‘)
#邮件正文
contents = [‘This is the body,and here is just text http://somedomain/image.png‘,‘You can find an andio file atteched.‘,‘/local/path/song mp3‘]
#发送邮件
yag.send(‘taaa@126.com‘,‘subject‘,contents)

给多个用户发邮件:

只需要将接收邮箱 变成一个list即可。

yag.send([‘aa@126.com‘,‘bb@qq.com‘,‘cc@gmail.com‘], ‘subject‘, contents)
发送附件

如何发送附件呢?只要添加一个附件列表就可以了。

yag.send(‘aaaa@126.com‘, ‘发送附件‘, contents, ["d://log.txt","d://baidu_img.jpg"])
抄送

#邮件正文 文本及附件contents = [‘This is the body,and here is just text http://somedomain/image.png‘,‘You can find an audio file attached.‘,‘/local/path/song.mp3‘,‘测试邮件‘,‘test.html‘,‘logo.jpg‘,‘yagmal_test.txt‘]#发送yag.send(to=‘xx@xx.com‘,cc=‘xxx@xxx.com‘,subject=‘发送附件‘,contend=contents)
很简单吧,开箱即用~~

最后,如果你跟我一样都喜欢python,也在学习python的道路上奔跑,欢迎你加入python学习群:839383765 群内每天都会分享最新业内资料,分享python免费课程,共同交流学习,让学习变(编)成(程)一种习惯!

原文地址:https://blog.51cto.com/14186420/2359298

时间: 2024-07-31 17:07:56

Github 大牛封装 Python 代码,实现自动发送邮件只需三行代码的相关文章

Cocos2d-x 3.x 开发(十八)10行代码看自动Batch,10行代码看自动剔除

1.概述 在游戏的运行过程中,图形的绘制是非常大的开销.对于良莠不齐的Android手机市场,绘制优化较好的游戏,可以在更多的手机上运行,因此也是优化的重中之重.图形方面的优化主要体现在减少GUP的绘制次数上.这里我们分别从自动优化渲染批次和绘制剔除两个方面来看新版本在绘制上的优化. 2.自动batch 在Cocos2d-x 3.x中,抛弃了先前手动编写BatchNode,采用自动管理的方式.说起BatchNode,就难免涉及到显卡底层的绘制原理.简单的说,每提交一条绘制指令到显卡都会产生消耗,

只需一行代码!Python中9大时间序列预测模型

在时间序列问题上,机器学习被广泛应用于分类和预测问题.当有预测模型来预测未知变量时,在时间充当独立变量和目标因变量的情况下,时间序列预测就出现了. 预测值可以是潜在雇员的工资或银行账户持有人的信用评分.任何正式引入统计数据的数据科学都会遇到置信区间,这是某个模型确定性的衡量标准. 因此,预测一段时间内某些数据的价值需要特定的技术,并且需要多年的发展. 由于每种都有其特殊用途,必须注意为特定应用选择正确的技术.预测人员在技术选择中发挥作用,他们越了解预测可能性的范围,公司的预测工作就越有可能取得成

【猿团专访】|涂图CEO胡东平:只需一行代码 移动图像开发从未如此简单

我们常常戏说这是一个靠脸吃饭的时代,继“整容”“化妆”之后,”修图““美颜”成为变好看的又一大神器.于是市场上涌现出越来越多自带美颜.滤镜功能的APP,大众也是用得不亦乐乎,可是移动图像处理开发套件领域出众者却寥寥.涂图(TuSDK)就像是横空杀出的黑马,2015年4月产品上线,6月即获得了浙大科发.华旦天使.立元创投.浙江国智的天使轮投资.截止目前,涂图已经覆盖8亿用户,整体客户超过4000家,并且每个月以四百五百家的量稳定增长,囊括了诸多如熊猫tv.小红书.一起秀. Blued这样的知名客户

漂浮广告代码兼容ie、firefox,多个漂浮不冲突,调用只需两行代码

原文:漂浮广告代码兼容ie.firefox,多个漂浮不冲突,调用只需两行代码 将广告内容放在div中,设置一个id,然后用下面方法调用var adcls=new AdMove("div的id");adcls.Run();注意,在调用前要先引用Main.js和AdFloat.js,div也要在调用前写好,原因就不用说了吧或者也可以用下面方法,在页面加载完成时调用,就不用考虑位置了addEvent(window,"load",initad);function inita

只需一行代码,将已有PC网站转成移动网站

跨屏网 Kuaping.com专注于几百万PC网站的移动化需求,只需在网站加载一行JS代码即可实现快速将网站变成移动端网站的需求. 对于响应式自适应界面,很多人可能还是不是特别清楚,响应式的实现方式在于通过界面技术来实现同一个界面在不同尺寸显示屏可以显示不同的界面.电脑端打开呈现的是电脑端网页的样子,手机下访问则看到的是手机版的样子, 这不是很高深的技术,只是对于html5技术的运用, 而跨屏网推出的一行JS代码快速实现,则是背后通过了更加复杂的分析技术实现. 今天跨屏网聊一聊自适应跨屏网站 跨

实习小白::(转) Cocos2d-x 3.x 开发(十八)10行代码看自动Batch,10行代码看自动剔除 --------其实就是渲染图片机制

1.概述 在游戏的运行过程中,图形的绘制是非常大的开销.对于良莠不齐的Android手机市场,绘制优化较好的游戏,可以在更多的手机上运行,因此也是优化的重 中之重.图形方面的优化主要体现在减少GPU的绘制次数上.这里我们分别从自动优化渲染批次和绘制剔除两个方面来看新版本在绘制上的优化. 2.自动batch 在Cocos2d-x 3.x中,抛弃了先前手动编写BatchNode,采用自动管理的方式.说起BatchNode,就难免涉及到显卡底层的绘制原理.简单的说,每提交一条 绘制指令到显卡都会产生消

封装了一个类,让你用三行代码就能获得相册或拍照得到的图片

一.最终成果 本例是用android自带的相册获取图片的,并且处理了很多异常,最终你的activity只需要用很少的代码就能获得用户选择好的图片了. 例子: public class GetSimplePhotoHelperActivity extends KaleBaseActivity { GetSimplePhotoHelper mPhotoHelper; @Override protected void onCreate(Bundle savedInstanceState) { supe

Python实现端口扫描,只需做这几步走战略

一.常见端口扫描的原理 0.秘密扫描 秘密扫描是一种不被审计工具所检测的扫描技术. 它通常用于在通过普通的防火墙或路由器的筛选(filtering)时隐藏自己. 秘密扫描能躲避IDS.防火墙.包过滤器和日志审计,从而获取目标端口的开放或关闭的信息.由于没有包含TCP 3次握手协议的任何部分,所以无法被记录下来,比半连接扫描更为隐蔽. 但是这种扫描的缺点是扫描结果的不可靠性会增加,而且扫描主机也需要自己构造IP包.现有的秘密扫描有TCP FIN扫描.TCP ACK扫描.NULL扫描.XMAS扫描和

file标签之act=read(只需一行代码读出文件内容)

功能: ·        读文件的内容 用法: <file act=read[id=书包名] [enc=文件字符编码] method=str name=名称[start=int] [end=int]>相对路径的文件名</file> ·        act=read:读操作 ·        id:返回的书包名(可选,默认为标签名file) ·        enc:文件内容的字符编码(可选,默认为平台文件存储编码@{sys:file.enc}) ·        method:目