python-基于yagmail库开发自动邮件发送程序
目录:
- 前言:
- 一,准备工作;
- 1.安装第三方库
- 2.邮箱设置步骤
- 二,编写程序
- 1.发送单个邮件的程序
- 2.发送单个邮件的进阶程序
前言:
很多时候,我们发送网络邮件都需要进入邮箱网站或App,可能都要重新输入自己的账号和密码,登入后还要经过一番点击,有时写信时不想需要那么多步骤,总想着能直接输入收件人邮箱地址,所要表达的邮件主题和内容就行。今天技术更迭不止,有很多程序和编程语言可以很方便地实现它。我们可以编写一个python程序来实现这一便利功能!
一,准备工作;
python类编程相关软件(pycharm或IDLE),自己常用的邮箱(国内的常见的几个都可以,像163,qq邮箱),总之材料简单。
1.安装第三方库
编写python程序,利用的是第三方库,需要通过pip指令自己下载或用pycharm的虚拟安装环境来安装,本次采用的是pip安装,安装方法如下:
终端命令行(最好管理员权限):
pip install yagmail
最好是最新版本:
2.邮箱设置步骤
本人用的是163网易邮箱(https://mail.163.com)为主,本次就用163邮箱为例,其他类型的邮箱设置都大同小异,可参考网上的其他教程。
设备步骤(按图片文字提示操作即可):
第一步:
第二步:
第三步:
不同的人群有着不同的需求,IMAP,SMTP,POS3各有自己独特的功能优势,可查看下图,根据自己的需要来选择,本次只开启的是IMAP的服务,也可两个同时开启,编写程序时再根据需求选择不同的服务!
第四步:
第五步:
扫码的话(微信扫就行或者其他可以扫码的基础工具)就会自动跳转到短信发送服务(同时也设好接受方了),但是有双卡的话,记得选择的是验证那个的号码,点击发送即可。手动发送的话,得自己设好那些信息,比较麻烦!
第六步:
除此之外,还有一些其他设置,可根据自己的爱好来设置它。
二,编写程序
我们安装库和邮箱设置成功后,可以汇总自己的相关信息,这些是我们首先需要设置的,并且不可缺少的它们是:
发送方的邮箱名(自己常用的邮箱);
邮箱开启的SMTP/IMAP的服务密码(自己对应申请到的);
端口:465(可直接用或其他的端口);
SMTP/IMAP的服务器地址:smtp.163.com(可直接用,或用IMAP的);
由于发送邮件是双方的,我们要设置好相应的邮件关键信息,这些设置时后续操作的,可编写程序时输入也可运行时输入,看编写具体情况:to:收件方邮箱地址;
subject:邮件主题;
contents:邮件内容;
attachments:附件信息;
1.发送单个邮件的程序
那么我们开始编写发送单个邮件的程序,它利用yagmail库即可几行代码实现,非常地简便:
import yagmail
#以下涉及到账号信息的,已经过处理,根据自己的信息来填写
user='@163.com'#发送方邮箱地址
password=''#申请过来的密码
port='465'#端口,会提供的
host='smtp.163.com'#对应的邮箱SMTP服务器地址mail = yagmail.SMTP(user, password, host, port)#设置基本账号参数,创建一个mail类实例
mail.send(to=["@qq.com"],subject=["LOVE"],contents=["I LOVE YOU!"])#使用其中的方法,发送其中所需发送的内容;
输出效果:
是不是很简单!
注意:
mail.send(to=["@qq.com"],subject=["LOVE"],contents=["I LOVE YOU!"])
上述的mail.send方法中如果任意参数使用:参数=变量(可同参数名)时,像subject=某变量,可随意更换位置,此时参数名是对应正式的参数名(to,contents等)。而使用对应信息的自定义变量或直接填写信息时,一定要按对应位置!为什么呢?其实send方法是一种函数,这几个参数设置相当于传参,函数的形参有着自己的规定,不注意的可自行寻找资料查看!
以下的也是还上面的一样!
mail = yagmail.SMTP(user, password, host, port)
那么我们如何编写一个能发送附件的邮件呢?只需在send方法中传入文件位置信息即可,程序如下:
import yagmail
#以下涉及到账号信息的,已经过处理,根据自己的信息来填写
user='@163.com'#发送方邮箱地址
password=''#申请过来的密码
port='465'#端口,会提供的
host='smtp.163.com'#对应的邮箱SMTP服务器地址mail = yagmail.SMTP(user, password, host, port)#设置基本账号参数,创建一个mail类实例
attachments=["C:/Users/zhouz/Desktop/python网络数据采集系列学习/邮箱/1980-2010年中国大陆GDP列表.csv"]
mail.send("@qq.com","LOVE","I LOVE YOU!",attachments)#使用其中的方法,发送其中所需发送的内容;
输出效果如下:
2.发送单个邮件的进阶程序
下面来编写发送邮件的进阶程序:
import yagmail
#以下一些设置信息到私密的,已删减处理,可根据自己信息来设置;
global user, password, port, host#定义全局变量
user='@163.com'#发送方(自己)的邮箱
password = ''#邮箱申请的服务密码,上面的步骤有介绍
port = '465'#端口
host = 'smtp.163.com'#对应的服务器地址def main(): while True:#使用循环可实现灵活发送多个邮件;lists=[]#附件相关信息序列表保存,每次完成循环最开始都为空列表print("邮件程序顶端".center(50,"-")+"\n")subject = input("请输入邮件主题:")#邮件主题to = input("请输入收件方地址:")#收件方邮箱地址contents = input("请输入邮件内容:")#邮件内容attachments=input("请输入附件文件目录(或输入skip跳过):")lists.append(attachments)try:#检查邮件发送是否成功很重要;mail = yagmail.SMTP(user, password, host, port)if attachments == "skip":#如何没有发送附件的需求,输入skip后将不会发送带有附件的邮件;mail.send(to,subject,contents) else:mail.send(to,subject,contents,lists)print("发送成功!\n")except:print("输入有误!请重新输入!\n")print("邮件程序底端".center(50, "-")+"\n")options=input("输入'out'结束程序或按任意键继续:")if options == "out":#使循环结束或继续;breakif __name__ == '__main__':main()
输出效果如下:
尽管该程序功能还不是很完整,比如:一次发送时不能同时输入多个收件方地址(即不能群发邮件)。但是,基本功能还是完整的,可以单独成一个模块(像那些库一样)供其他程序使用。或者以这个为基础编写代码进行二次开发,可以写出更多的功能(像群发邮件)。所以该程序仅供学习交流。另外,文件目录编写时,文件目录千万不要含有"",其他的"\"等都可以。
最后,文中如有不足,欢迎批评指正!!!
python-基于yagmail库开发自动邮件发送程序相关推荐
- 基于python的图形化邮件发送程序(支持添加附件)
2019独角兽企业重金招聘Python工程师标准>>> 开发环境:centos7 基于:python3.5 调用库:tkinter smtplib email linux中类outl ...
- python可以自动拆分表格吗_如何利用Python一键拆分表格并进行邮件发送~
因为平时经常要将 一张表 拆成工作簿,拆完还要发给不同的对象,工作又使用outlook发邮件,所以本文调用outlook账号进行邮件的发送作为示例:在 一张表拆成多个sheet的基础上,修改了代码,可 ...
- Py自动化办公—Word文档替换、Excel表格读取、Pdf文件生成和Email自动邮件发送实战案例...
点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 平阳歌舞新承宠,帘外春寒赐锦袍. ...
- 表格某一列不固定其余全固定_如何利用Python一键拆分表格并进行邮件发送~
因为平时经常要将 一张表 拆成工作簿,拆完还要发给不同的对象,工作又使用outlook发邮件,所以本文调用outlook账号进行邮件的发送作为示例:在 一张表拆成多个sheet的基础上,修改了代码,可 ...
- 自动发送邮件的服务器,自动邮件发送_任何情况立刻通知你
原标题:自动邮件发送_任何情况立刻通知你 Python自动邮件发送 在日常工作中,我们经常需要收发邮件,不知大家可曾想过,如果能够实现自动发送,那岂不是爽歪歪~ 就像跑图像检测的模型经常跑一两天,如果 ...
- 物联网竞赛-基于basicRF库开发-基础知识总结
基于basicRF库开发-基础知识总结 一.BasicRf基础知识普及 二.BasicRf开发库的常用hal库的介绍 二.BasicRf开发库的常用函数及框架 1.**双击实现算法函数** 2.**实 ...
- 小悦文件保险箱 - 一款基于DuiLib 库开发的文件加密工具
小悦文件保险箱是一款基于DuiLib 库开发的文件加密工具. 作为学习型编程,所以免费供大家使用.它可以作为加密备忘录使用,也能够为任何文件提供加密保存功能.使用方法也非常简单,先输入密码创建一个自己 ...
- 自动邮件发送(群发,加密等)
使用Python自动发送邮件(群发,加密等) 在工作中很多公司没有购买专业的OA系统,发工资条,发通知,有时很不方便,要么专人做这个事,一个一个发 ,太麻烦,耗费很多工时.这个程序只需要整理发送信息的 ...
- python watchdog占用,python基于watchdog库全自动化监控目录文件
楔子 有些时候我们需要对一个目录进行监控,检测其内部是否有文件的新增.删除.以及每个文件的内容是否发生变化,这个时候如果是你的话,你会选择怎么做呢? 显然也是一个比较麻烦的工作,倒不是说难,主要是比较 ...
最新文章
- plus flink add.php,不想要dede5.7织梦链只要修改模板里几行代码
- redis+主从复制+集群配置
- 图像降噪算法——中值滤波/均值滤波/高斯滤波/双边滤波
- 大四中软实习笔记20130226
- JGroups:无需额外基础架构的领导人选举
- Visual.Assist.X.V10.7.1940的汉化破解补丁
- java客户姓名添加和查找_java类与对象 演练 客户姓名添加与查看
- TCP三次握手和四次挥手过程
- php最复杂,php – 什么方法最好构建这个复杂的图
- 物联网可能面临灾难性安全风险
- 定义druid工具类
- 把url地址复制到粘贴板上_写个简单的python爬虫爬取堆糖上漂亮的小姐姐
- 朴宥拉短片突破了几百万的观看量
- 实用设置_华为手机4个冷门实用的设置,都知道的绝对是资深花粉
- 消息队列的使用场景(转载c)
- 华为主题锁屏壁纸换不掉_华为手机总出现一些不明照片咋回事,原来你没关闭这个默认设置...
- 时尚亲民的发烧耳机,无需焊接的模块化设计,小蝙蝠M0体验
- 梦幻西游手游经验任务链计算机,梦幻西游手游任务链技巧攻略详解
- 让笔记本的无线网卡指示灯不再狂闪的方法
- easyexcel自定义拦截器,实现自定义单元格样式
热门文章
- VS2015默认不支持x64下__asm{}内联汇编的解决方案(含资源共享)
- Jfrog 搭建本地maven仓库以及上传Android库
- SpringBoot的学习资源 尚硅谷 蚂蚁学院
- 连夜干出来一个自动处理【支付宝交易支付投诉管理系统】,支持多商户
- Ik分词器(自定义分词-mysql)
- vins-fusion代码解读[五] imu在vins里的理解
- 静态方法 和静态变量——Java
- 常见功能测试点的测试用例集合--51testing
- idea中启动vue项目
- STM32基于软件模拟IIC进行AHT21B温湿度采集