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. 【Android Studio】安卓开发初体验2——Activity

    Activity是什么 Activity用于提供可视化用户界面的组件,可以与用户进行交互来完成某项任务,一个应用程序中可以包含零个或多个活动 Activity的创建 首先将左侧的Active Tool ...

  2. MarkdownPad 2中编辑

    一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 #######七级标题 ########八级标题 #!/bin/bash declare -i evenSum=0 declare -i i ...

  3. Java_Math类和Random类

    Math类 java.lang.Math提供了一系列静态方法用于科学计算, 其方法的参数和返回值类型一般都为double型, 如果需要更加强大的数学运算能力计算高等数学中的相关内容, 可使用apach ...

  4. c# 创建delphi的代码

    需求: 有一个专业表,没有插入数据,读取的excel,复制为txt文件 每行读取 并且 将汉字的一转换为数字1 private void barButtonItem4_ItemClick(object ...

  5. 线程安全的SimpleDateFormat

    import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; imp ...

  6. egit版本对应关系。

    egit版本对应关系. http://wiki.eclipse.org/EGit/FAQ#What_versions_of_Eclipse_does_EGit_target.3F

  7. create-react-app添加对TypeScript支持

    背景 最近一直在重构react项目,由于项目历史原因,将之前parcel打包工具换成了webpack,并选择了使用create-react-app作为项目开发脚手架. 接着就是把项目中flow类型检查 ...

  8. git命令学习之clone指定分支代码

    今天要拉取一个项目,但是是一个指定分支,本来我以为直接git clone就行,但是发现好像不能,报错: Cloning into 'lecture'...fatal: unable to update ...

  9. error while loading shared libraries解決方法

    在linux下运行程序时,发现了error while loading shared libraries这种错误,一时间不知道解决办法,在网上搜索,终于解决了. error while loading ...

  10. Idea eclipse 快捷键Debug调试

    运行下一行             F6 进入下一次计算      F5 运行到下一个断电  F7 恢复运行                F8