Python基于smtplib模块发送邮件代码实例


Posted in Python onMay 29, 2020

smtplib模块负责发送邮件:是一个发送邮件的动作,连接邮箱服务器,登录邮箱,发送邮件(有发件人,收信人,邮件内容)。

email模块负责构造邮件:指的是邮箱页面显示的一些构造,如发件人,收件人,主题,正文,附件等。

email模块下有mime包,mime英文全称为“Multipurpose Internet Mail Extensions”,即多用途互联网邮件扩展,是目前互联网电子邮件普遍遵循的邮件技术规范。

该mime包下常用的有三个模块:text,image,multpart。

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header

#邮件服务器信息
smtp_server = "smtp.qq.com"
port = 465 # For starttls
sender_email = "12345689@qq.com"
password="" #get password from mailsetting

#发送邮件信息,可以发送给多个收件人
receivers=["12345689@163.com","12345689@qq.com"]
subject="This is import Python SMTP 邮件(文件传输) 多媒体测试"

# message = MIMEText(text, "plain", "utf-8") #文本邮件
message = MIMEMultipart()
message["Subject"] = Header(subject, "utf-8")
message["from"] = sender_email
message["to"] = ",".join(receivers)
# 邮件正文内容
text="""
Dear Sir:
how are you ? \n
for detail information pls refer to attach1。\n
The files you need are as followed.\n
If you have any concern pls let me known.\n
enjoy your weekend.\n
BEST REGARDS \n
"""
# message.attach(MIMEText('for detail information pls refer to attach1。\n The files you need are as followed. \n If you have any concern pls let me known. \n enjoy your weekend', 'plain', 'utf-8')
message.attach(MIMEText(text,'plain','utf-8'))

# 构造附件1
attach_file1='IMG1965.JPG'

attach1 = MIMEText(open(attach_file1, 'rb').read(), 'base64', 'utf-8')
attach1["Content-Type"] = 'application/octet-stream'
attach1["Content-Disposition"] = 'attachment; filename={0}'.format(attach_file1)
message.attach(attach1)

# 构造附件2
attach_file2='YLJ.jpg'
attach2 = MIMEText(open(attach_file2, 'rb').read(), 'base64', 'utf-8')
attach2["Content-Type"] = 'application/octet-stream'
attach2["Content-Disposition"] = 'attachment; filename={0}'.format(attach_file2)
message.attach(attach2)

# Try to log in to server and send email
# server = smtplib.SMTP_SSL(smtp_server,port)
server = smtplib.SMTP_SSL(smtp_server,port)

try:
  server.login(sender_email, password)
  server.sendmail(sender_email,receivers,message.as_string())
  print("邮件发送成功!!!")
  print("Mail with {0} & {1} has been send to {2} successfully.".format(attach_file1,attach_file2,receivers))
except Exception as e:
  # Print any error messages to stdout
  print("Error: 无法发送邮件")
  print(e)
finally:
  server.quit()

结果

邮件发送成功!!!

Mail with IMG1965.JPG & IMG1963.jpg has been send to ['12345689@163.com', '12345689@qq.com'] successfully.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python获得图片base64编码示例
Jan 16 Python
利用python代码写的12306订票代码
Dec 20 Python
Python字典操作详细介绍及字典内建方法分享
Jan 04 Python
Selenium定位元素操作示例
Aug 10 Python
python os.path模块常用方法实例详解
Sep 16 Python
Python实现按逗号分隔列表的方法
Oct 23 Python
python实现LRU热点缓存及原理
Oct 29 Python
浅谈tensorflow 中tf.concat()的使用
Feb 07 Python
树莓派4B安装Tensorflow的方法步骤
Jul 16 Python
如何使用scrapy中的ItemLoader提取数据
Sep 30 Python
python 通过exifread读取照片信息
Dec 24 Python
解决hive中导入text文件遇到的坑
Apr 07 Python
Django通过json格式收集主机信息
May 29 #Python
Python小白不正确的使用类变量实例
May 29 #Python
python小白切忌乱用表达式
May 29 #Python
Python爬虫实现百度翻译功能过程详解
May 29 #Python
Django中的模型类设计及展示示例详解
May 29 #Python
如何理解Python中包的引入
May 29 #Python
浅谈django channels 路由误导
May 28 #Python
You might like
全国FM电台频率大全 - 2 天津市
2020/03/11 无线电
《PHP编程最快明白》第六讲:Mysql数据库操作
2010/11/01 PHP
使用php shell命令合并图片的代码
2011/06/23 PHP
使用session判断用户登录用户权限(超简单)
2013/06/08 PHP
完美实现wordpress禁止文章修订和自动保存的方法
2014/11/03 PHP
PHP实现微信JS-SDK接口选择相册及拍照并上传的方法
2016/12/05 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
2019/03/25 PHP
PHP 出现 http500 错误的解决方法
2021/03/09 PHP
dropdownlist之间的互相联动实现(显示与隐藏)
2009/11/24 Javascript
javascript教程之不完整的继承(js原型链)
2014/01/13 Javascript
jQuery中$.click()无效问题分析
2015/01/29 Javascript
js限制文本框只能输入整数或者带小数点的数字
2015/04/27 Javascript
jQuery css() 方法动态修改CSS属性
2016/09/25 Javascript
jquery获取easyui日期控件的值实现方法
2016/11/09 Javascript
ES6新特性七:数组的扩充详解
2017/04/21 Javascript
JavaScript函数的特性与应用实践深入详解
2018/12/30 Javascript
AntV F2和vue-cli构建移动端可视化视图过程详解
2019/10/08 Javascript
微信小程序实现导航栏和内容上下联动功能代码
2020/06/29 Javascript
Vue实现背景更换颜色操作
2020/07/17 Javascript
[00:12]DAC2018 Miracle-站上中单舞台,他能否再写奇迹?
2018/04/06 DOTA
[50:27]Secret vs VG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python更改已存在excel文件的方法
2018/05/03 Python
Python实现求一个集合所有子集的示例
2018/05/04 Python
使用PM2+nginx部署python项目的方法示例
2018/11/07 Python
Python制作exe文件简单流程
2019/01/24 Python
解决IDEA 的 plugins 搜不到任何的插件问题
2020/05/04 Python
Python爬虫谷歌Chrome F12抓包过程原理解析
2020/06/04 Python
Python爬虫与反爬虫大战
2020/07/30 Python
pytorch加载语音类自定义数据集的方法教程
2020/11/10 Python
一文带你掌握Pyecharts地理数据可视化的方法
2021/02/06 Python
利用python实现后端写网页(flask框架)
2021/02/28 Python
CSS3实现渐变背景兼容问题
2020/05/06 HTML / CSS
优秀教师个人材料
2014/12/15 职场文书
2016年优秀党员教师先进事迹材料
2016/02/29 职场文书
使用 Apache Superset 可视化 ClickHouse 数据的两种方法
2021/07/07 Servers
Python 快速验证代理IP是否有效的方法实现
2021/07/15 Python