目录:

  • 前言:
  • 一,准备工作;
    • 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的服务,也可两个同时开启,编写程序时再根据需求选择不同的服务!


第四步:

第五步:
扫码的话(微信扫就行或者其他可以扫码的基础工具)就会自动跳转到短信发送服务(同时也设好接受方了),但是有双卡的话,记得选择的是验证那个的号码,点击发送即可。手动发送的话,得自己设好那些信息,比较麻烦!

第六步:

除此之外,还有一些其他设置,可根据自己的爱好来设置它。

二,编写程序

我们安装库和邮箱设置成功后,可以汇总自己的相关信息,这些是我们首先需要设置的,并且不可缺少的它们是:

  1. 发送方的邮箱名(自己常用的邮箱);

  2. 邮箱开启的SMTP/IMAP的服务密码(自己对应申请到的);

  3. 端口:465(可直接用或其他的端口);

  4. SMTP/IMAP的服务器地址:smtp.163.com(可直接用,或用IMAP的);
    由于发送邮件是双方的,我们要设置好相应的邮件关键信息,这些设置时后续操作的,可编写程序时输入也可运行时输入,看编写具体情况:

  5. to:收件方邮箱地址;

  6. subject:邮件主题;

  7. contents:邮件内容;

  8. 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库开发自动邮件发送程序相关推荐

  1. 基于python的图形化邮件发送程序(支持添加附件)

    2019独角兽企业重金招聘Python工程师标准>>> 开发环境:centos7 基于:python3.5 调用库:tkinter smtplib email linux中类outl ...

  2. python可以自动拆分表格吗_如何利用Python一键拆分表格并进行邮件发送~

    因为平时经常要将 一张表 拆成工作簿,拆完还要发给不同的对象,工作又使用outlook发邮件,所以本文调用outlook账号进行邮件的发送作为示例:在 一张表拆成多个sheet的基础上,修改了代码,可 ...

  3. Py自动化办公—Word文档替换、Excel表格读取、Pdf文件生成和Email自动邮件发送实战案例...

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 平阳歌舞新承宠,帘外春寒赐锦袍. ...

  4. 表格某一列不固定其余全固定_如何利用Python一键拆分表格并进行邮件发送~

    因为平时经常要将 一张表 拆成工作簿,拆完还要发给不同的对象,工作又使用outlook发邮件,所以本文调用outlook账号进行邮件的发送作为示例:在 一张表拆成多个sheet的基础上,修改了代码,可 ...

  5. 自动发送邮件的服务器,自动邮件发送_任何情况立刻通知你

    原标题:自动邮件发送_任何情况立刻通知你 Python自动邮件发送 在日常工作中,我们经常需要收发邮件,不知大家可曾想过,如果能够实现自动发送,那岂不是爽歪歪~ 就像跑图像检测的模型经常跑一两天,如果 ...

  6. 物联网竞赛-基于basicRF库开发-基础知识总结

    基于basicRF库开发-基础知识总结 一.BasicRf基础知识普及 二.BasicRf开发库的常用hal库的介绍 二.BasicRf开发库的常用函数及框架 1.**双击实现算法函数** 2.**实 ...

  7. 小悦文件保险箱 - 一款基于DuiLib 库开发的文件加密工具

    小悦文件保险箱是一款基于DuiLib 库开发的文件加密工具. 作为学习型编程,所以免费供大家使用.它可以作为加密备忘录使用,也能够为任何文件提供加密保存功能.使用方法也非常简单,先输入密码创建一个自己 ...

  8. 自动邮件发送(群发,加密等)

    使用Python自动发送邮件(群发,加密等) 在工作中很多公司没有购买专业的OA系统,发工资条,发通知,有时很不方便,要么专人做这个事,一个一个发 ,太麻烦,耗费很多工时.这个程序只需要整理发送信息的 ...

  9. python watchdog占用,python基于watchdog库全自动化监控目录文件

    楔子 有些时候我们需要对一个目录进行监控,检测其内部是否有文件的新增.删除.以及每个文件的内容是否发生变化,这个时候如果是你的话,你会选择怎么做呢? 显然也是一个比较麻烦的工作,倒不是说难,主要是比较 ...

最新文章

  1. plus flink add.php,不想要dede5.7织梦链只要修改模板里几行代码
  2. redis+主从复制+集群配置
  3. 图像降噪算法——中值滤波/均值滤波/高斯滤波/双边滤波
  4. 大四中软实习笔记20130226
  5. JGroups:无需额外基础架构的领导人选举
  6. Visual.Assist.X.V10.7.1940的汉化破解补丁
  7. java客户姓名添加和查找_java类与对象 演练 客户姓名添加与查看
  8. TCP三次握手和四次挥手过程
  9. php最复杂,php – 什么方法最好构建这个复杂的图
  10. 物联网可能面临灾难性安全风险
  11. 定义druid工具类
  12. 把url地址复制到粘贴板上_写个简单的python爬虫爬取堆糖上漂亮的小姐姐
  13. 朴宥拉短片突破了几百万的观看量
  14. 实用设置_华为手机4个冷门实用的设置,都知道的绝对是资深花粉
  15. 消息队列的使用场景(转载c)
  16. 华为主题锁屏壁纸换不掉_华为手机总出现一些不明照片咋回事,原来你没关闭这个默认设置...
  17. 时尚亲民的发烧耳机,无需焊接的模块化设计,小蝙蝠M0体验
  18. 梦幻西游手游经验任务链计算机,梦幻西游手游任务链技巧攻略详解
  19. 让笔记本的无线网卡指示灯不再狂闪的方法
  20. easyexcel自定义拦截器,实现自定义单元格样式

热门文章

  1. VS2015默认不支持x64下__asm{}内联汇编的解决方案(含资源共享)
  2. Jfrog 搭建本地maven仓库以及上传Android库
  3. SpringBoot的学习资源 尚硅谷 蚂蚁学院
  4. 连夜干出来一个自动处理【支付宝交易支付投诉管理系统】,支持多商户
  5. Ik分词器(自定义分词-mysql)
  6. vins-fusion代码解读[五] imu在vins里的理解
  7. 静态方法 和静态变量——Java
  8. 常见功能测试点的测试用例集合--51testing
  9. idea中启动vue项目
  10. STM32基于软件模拟IIC进行AHT21B温湿度采集