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实现自动发邮件的更多相关文章

  1. python连接数据库自动发邮件

    python连接数据库实现自动发邮件 1.运行环境 redhat6 + python3.6 + crontab + Oracle客户端 2.用到的模块  3.操作步骤 (1)安装python3.6参考 ...

  2. python自动发邮件库yagmail

    #### 一般发邮件方法 我以前在通过Python实现自动化邮件功能的时候是这样的: import smtplib from email.mime.text import MIMEText from ...

  3. python自动发邮件库yagmail(转)

    一般发邮件方法 我以前在通过Python实现自动化邮件功能的时候是这样的: import smtplib from email.mime.text import MIMEText from email ...

  4. 【python】python 自动发邮件

    一.一般发邮件的方法 Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件. 注意到构造MIMETEXT对象时,第一个参数就是邮件正文,第 ...

  5. Selenium 2自动化测试实战37(自动发邮件功能)

    自动发邮件功能 例如,如果想在自动化脚本运行完成之后,邮箱就可以收到最新的测试报告结果.SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,它是一组用于由源地址到 ...

  6. PHP自动发邮件

    自动发邮件 使用了这个类http://bbs.php100.com/read-htm-tid-121431.html 因他用的php版本较老,用到了函数ereg_replace() 和 ereg() ...

  7. java windows自动化-mail自动发邮件

    本文旨在让测试人员了解如何发邮件 发邮件的话,最简单的事是直接手动发邮件,但是在自动化测试中,应做到让机器或者代码来自动发送邮件,笔者大概了解以下几种方法,总有一款口味适合你:1java代码来做下面即 ...

  8. jira6.3.6创建问题不自动发邮件通知的问题

    装完jira6.3.6后,设置好邮件服务器,测试没有问题.但是创建问题不自动发邮件提示用户.折腾了大半天,请教了一位大神,终于搞定.步骤是: agile->系统->用户界面->用户缺 ...

  9. redmine创建新闻,自动发邮件给项目组所有成员

    redmine创建新闻,自动发邮件给项目组所有成员: 1.添加用户至公共项目内 2.配置系统邮件推送配置 3.检查用户接受推送配置 3.使用管理员账户发布新闻(不能自己发送自己) 4.查看邮件接受邮件

随机推荐

  1. ZOJ 1005 Jugs(BFS)

    Jugs In the movie "Die Hard 3", Bruce Willis and Samuel L. Jackson were confronted with th ...

  2. rabbitmq集群搭建,镜像队列搭建

    原文地址:https://www.jianshu.com/p/11963564dd3d 教你如何从0开始搭建rabbitmq集群 一.准备工作 1.三台centos虚拟机 2.三台虚拟机都安装了doc ...

  3. Django之简易用户系统(3)

    目录 1. 总体设计思路 2. 搭建简易用户系统 2.1 配置模型Model 2. 2 写入数据库: 2.3 数据库验证表: 2.4 路由URL配置: 2.5 用户增加 后台执行脚本配置: 视图模板配 ...

  4. 洛谷P6623——[省选联考 2020 A 卷] 树

    传送门:QAQQAQ 题意:自己看 思路:正解应该是线段树/trie树合并? 但是本蒟蒻啥也不会,就用了树上二次差分 (思路来源于https://www.luogu.com.cn/blog/dengy ...

  5. 【SpringBoot】10.SpringBoot文件上传

    SpringBoot整合Thymeleaf 1.创建Thymeleaf的入门项目 maven构建简单项目 修改pom文件添加thymeleaf的坐标 <!-- thymeleaf的坐标 --&g ...

  6. JavaSE基础语法学习-方法&数组

    方法 Java方法是语句的集合,它们在一起执行一个功能. 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 设计方法的原则:方法的本意是功能块,就是实现某 ...

  7. Azure Data Factory(四)集成 Logic App 的邮件通知提醒

    一,引言 上一篇有介绍到使用Azure Data Factory 复制数据,然后有集成 Azure DevOps 实现CI/CD,但是对于真正的项目来说,这些肯定是不够的,比如说在执行 Azure P ...

  8. 浮动布局问题多,还是用inline-block吧

    说说知识陈旧的问题. 目前我的前端开发知识积累最大的问题就是版本问题,也许我已经经历了很多,尝试了很多, 但是有些知识的版本已经过时了,而我还没有来得及更新它们.更悲剧的可能是有些部分我还没有意识到. ...

  9. W3C中不同标准的含义

    学习CSS/HTML的过程中,当出现释义冲突时,W3C(万维网联盟)官网所陈列的技术标准是最核心的判断参考.但是新手在查阅W3C标准索引页面时,会发现同一个属性或者模型会出现多个不同的阶段规范展示结果 ...

  10. IAR设置字体

    1.IAR设置字体 第一种方法可以在IDE环境下,选择Tools -> option -> Editor - > Colors and Fonts,然后右边的Editor Font就 ...