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

运行成功:

最新文章

  1. quartz.net 时间表达式----- Cron表达式详解
  2. @Resource、@Autowired、@Qualifier的注解注入及区别
  3. WIN7里为什么没有TELNET,怎么添加
  4. java多线程:并发包中ReentrantReadWriteLock读写锁的锁降级模板
  5. 【BZOJ2434-[Noi2011]】阿狸的打字机(AC自动机(fail树)+离线+树状数组)
  6. android:android:background=&quot;#00000000&quot;,透明效果
  7. Linux学习笔记整理
  8. ArrayList、HashMap、HashSet源码总结
  9. 一键分享代码(提供能分享到QQ空间、新浪微博、人人网等的分享功能)
  10. ffmpeg日志调式
  11. Error: Cannot find module &#39;webpack/schemas/WebpackOptions.json&#39; 问题解决
  12. Django认证系统
  13. centos7如何安装gcc5.4
  14. 经典算法分析:n与lgn
  15. PHP 数据运算类型都有哪些?
  16. Linux - 更改软件源
  17. 如何一键式搭建微信小程序
  18. 改造phpcms-v9自带的字符串截取函数
  19. Python静态方法实现单实例模式
  20. 智能家居入门DIY——【四、组合】

热门文章

  1. P6773 [NOI2020]命运
  2. Pycharm激活码亲测有效,2020Pycharm最新激活码免费分享~
  3. 08flask中get和post请求。
  4. python_socket登陆验证_明文
  5. currentColor在CSS的含义
  6. dp背包 面试题 08.11. 硬币
  7. spark任务执行流程
  8. java大厂面经-阿里腾讯、网易美团、京东、华为、快手、字节全在这里了
  9. prometheus监控实战--基础
  10. 在Camtasia中对录制视频进行转换编辑