python实现自动发邮件
Python有两个内置库:smtplib和email,可以实现邮件功能,无需下载,直接import导入。
- smtplib库负责发送邮件
- Email库负责构造邮件格式和内容
邮件发送需要遵守SMTP协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。
实验代码
1 #Part 1:导入相关的库和方法
2 #导入两个内置库
3 import smtplib
4 import email
5 #负责构造文本
6 from email.mime.text import MIMEText
7 #负责构造图片
8 from email.mime.image import MIMEImage
9 #负责将多个对象集合起来
10 from email.mime.multipart import MIMEMultipart
11 from email.header import Header
12
13 #Part 2:设置邮箱域名,发件人邮箱,邮箱授权码,收件人邮箱
14 #SMTP服务器,这里使用163邮箱
15 mail_host="smtp.163.com"
16 #发件人邮箱
17 mail_sender="**********@163.com"
18 #邮箱授权码
19 mail_license="VJCQPLGSMHJQFWEL"
20 mail_receivers=["**********@gmail.com"]
21
22 #Part 3:构建MIMEMultipart对象代表邮件本身,可以往里面添加文本、图片、附件等
23 mm=MIMEMultipart('related')
24
25 #Part 4:设置邮件头部内容
26 #邮件主题
27 subject_content="python邮件测试"
28 #设置发送者,严格遵守格式
29 mm["From"]="sender_name<********@163.com>"
30 #设置接收者,严格遵守格式
31 mm["To"]="receiver_name<*********@gmail.com>"
32 #设置邮件主题
33 mm["Subject"]=Header(subject_content,'utf-8')
34
35 #Part 5:添加正文文本
36 # 邮件正文内容
37 body_content = "你好,这是一个测试邮件!"
38 # 构造文本,参数1:正文内容,参数2:文本格式,参数3:编码方式
39 message_text = MIMEText(body_content,"plain","utf-8")
40 # 向MIMEMultipart对象中添加文本对象
41 mm.attach(message_text)
42
43 #Part 6:添加图片
44 # 二进制读取图片
45 image_data = open('a.jpg','rb')
46 # 设置读取获取的二进制数据
47 message_image = MIMEImage(image_data.read())
48 # 关闭刚才打开的文件
49 image_data.close()
50 # 添加图片文件到邮件信息当中去
51 mm.attach(message_image)
52
53 #Part 7:添加附件
54 # 构造附件
55 atta = MIMEText(open('sample.xlsx', 'rb').read(), 'base64', 'utf-8')
56 # 设置附件信息
57 atta["Content-Disposition"] = 'attachment; filename="sample.xlsx"'
58 # 添加附件到邮件信息当中去
59 mm.attach(atta)
60
61 #Part 8:发送邮件
62 # 创建SMTP对象
63 stp = smtplib.SMTP()
64 # 设置发件人邮箱的域名和端口,端口地址为25
65 stp.connect(mail_host, 25)
66 # set_debuglevel(1)可以打印出和SMTP服务器交互的所有信息
67 stp.set_debuglevel(1)
68 # 登录邮箱,传递参数1:邮箱地址,参数2:邮箱授权码
69 stp.login(mail_sender,mail_license)
70 # 发送邮件,传递参数1:发件人邮箱地址,参数2:收件人邮箱地址,参数3:把邮件内容格式改为str
71 stp.sendmail(mail_sender, mail_receivers, mm.as_string())
72 print("邮件发送成功")
73 # 关闭SMTP对象
74 stp.quit()
遇到的问题:
smtp出现(500, b'Error: bad syntax')
解决办法:
https://blog.csdn.net/weixin_38428827/article/details/104223207
运行成功:

python实现自动发邮件的更多相关文章
- python连接数据库自动发邮件
python连接数据库实现自动发邮件 1.运行环境 redhat6 + python3.6 + crontab + Oracle客户端 2.用到的模块 3.操作步骤 (1)安装python3.6参考 ...
- python自动发邮件库yagmail
#### 一般发邮件方法 我以前在通过Python实现自动化邮件功能的时候是这样的: import smtplib from email.mime.text import MIMEText from ...
- python自动发邮件库yagmail(转)
一般发邮件方法 我以前在通过Python实现自动化邮件功能的时候是这样的: import smtplib from email.mime.text import MIMEText from email ...
- 【python】python 自动发邮件
一.一般发邮件的方法 Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件. 注意到构造MIMETEXT对象时,第一个参数就是邮件正文,第 ...
- Selenium 2自动化测试实战37(自动发邮件功能)
自动发邮件功能 例如,如果想在自动化脚本运行完成之后,邮箱就可以收到最新的测试报告结果.SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,它是一组用于由源地址到 ...
- PHP自动发邮件
自动发邮件 使用了这个类http://bbs.php100.com/read-htm-tid-121431.html 因他用的php版本较老,用到了函数ereg_replace() 和 ereg() ...
- java windows自动化-mail自动发邮件
本文旨在让测试人员了解如何发邮件 发邮件的话,最简单的事是直接手动发邮件,但是在自动化测试中,应做到让机器或者代码来自动发送邮件,笔者大概了解以下几种方法,总有一款口味适合你:1java代码来做下面即 ...
- jira6.3.6创建问题不自动发邮件通知的问题
装完jira6.3.6后,设置好邮件服务器,测试没有问题.但是创建问题不自动发邮件提示用户.折腾了大半天,请教了一位大神,终于搞定.步骤是: agile->系统->用户界面->用户缺 ...
- redmine创建新闻,自动发邮件给项目组所有成员
redmine创建新闻,自动发邮件给项目组所有成员: 1.添加用户至公共项目内 2.配置系统邮件推送配置 3.检查用户接受推送配置 3.使用管理员账户发布新闻(不能自己发送自己) 4.查看邮件接受邮件
随机推荐
- 【17】进大厂必须掌握的面试题-50个Angular面试
我们整理了一份主要的Angular面试问题清单,分为三部分: 角度面试问题–初学者水平 角度面试问题–中级 角度面试问题–高级 初学者水平–面试问题 1.区分Angular和AngularJS. 特征 ...
- GROUP BY 分组后得到最新即时间最大的一条数据(需添加limit才可生效)
当使用GROUP BY 分组,默认返回的数据是组中最小的记录即id最小的数据, 当开发中经常会需要分组后将最新的数据放在前面, 为了实现需求,使用了嵌套查询,分别使用order by来排序 SELEC ...
- 利用sklearn实现k-means
基于上面的一篇博客k-means利用sklearn实现k-means #!/usr/bin/env python # coding: utf-8 # In[1]: import numpy as np ...
- 在windows下安装node-sass失败,提示\node-sass: Command failed,解决方案
执行命令 yarn add node-sass@4.7.2 --dev --registry=https://registry.npm.taobao.org :报错 出现这个问题的原因一般是网络问题, ...
- TP3 根据时间区间搜索的方法
/** * 时间段查询条件获取 * @param string $star 获取开始时间的字段名 * @param string $end 获取结束时间的字段名 * @param string $zd ...
- MySQL全面瓦解11:子查询和组合查询
概述 子查询是SQL查询中的重要一块,是我们基于多表之间进行数据聚合和判断的一种手段,使得我们的处理复杂数据更加的便捷,这一节我们主要来了解一下子查询. 先做一下数据准备,这边建立三张表:班级.学生. ...
- C++调用Go方法的字符串传递问题及解决方案
摘要:C++调用Go方法时,字符串参数的内存管理需要由Go侧进行深度值拷贝. 现象 在一个APP技术项目中,子进程按请求加载Go的ServiceModule,将需要拉起的ServiceModule信息 ...
- kettle练习
Kettle实现,把数据从CSV文件复制到Excel文件. 首先,创建一个转换,找到核心对象,找到输入里面的CVS文件输入图元,拖拽到工作区域,双击CVS文件输入. 可以修改步骤的名称,点击浏览,选择 ...
- Python:利用Entrez库筛选下载PubMed文献摘要
一个不是学生物的孩子来搞生物,当真是变成了一块废铁啊,但也是让我体会到了一把生物信息的力量. 废话不多说,开整! 任务:快速高效从PubMed上下载满足条件的文献PMID.标题(TI).摘要(AB). ...
- day96:flask:flask-migrate&flask-session&蓝图Blueprint&蓝图的运行机制
目录 1.flask-migrate 2.flask-session 3.蓝图:Blueprint 4.蓝图的运行机制 1.数据库迁移:flask-migrate 1.Flask的数据库迁移 在开发过 ...