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中利用sorted()函数排序的简单教程
Apr 27 Python
python使用xmlrpclib模块实现对百度google的ping功能
Jun 02 Python
使用Python求解最大公约数的实现方法
Aug 20 Python
简单介绍使用Python解析并修改XML文档的方法
Oct 15 Python
python 获取指定文件夹下所有文件名称并写入列表的实例
Apr 23 Python
如何实现删除numpy.array中的行或列
May 08 Python
将tensorflow的ckpt模型存储为npy的实例
Jul 09 Python
详解python如何在django中为用户模型添加自定义权限
Oct 15 Python
Python简单实现词云图代码及步骤解析
Jun 04 Python
Python爬虫教程知识点总结
Oct 19 Python
如何用Django处理gzip数据流
Jan 29 Python
Python基础之变量的相关知识总结
Jun 23 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
php设计模式之简单工厂模式详解
2014/09/04 PHP
php对关联数组循环遍历的实现方法
2015/03/13 PHP
php基于Snoopy解析网页html的方法
2015/07/09 PHP
php截取视频指定帧为图片
2016/05/16 PHP
php获取文章内容第一张图片的方法示例
2017/07/03 PHP
phpstorm 配置xdebug的示例代码
2019/03/31 PHP
PHP中遍历数组的三种常用方法实例分析
2019/06/24 PHP
jQuery第三课 修改元素属性及内容的代码
2010/03/14 Javascript
Ajax 数据请求的简单分析
2011/04/05 Javascript
js获取height和width的方法说明
2013/01/06 Javascript
javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)
2013/12/17 Javascript
JS输入用户名自动显示邮箱后缀列表的方法
2015/01/27 Javascript
PHP+jQuery实现随意拖动层并即时保存拖动位置
2015/04/30 Javascript
使用Javascript写的2048小游戏
2015/11/25 Javascript
深入学习JavaScript的AngularJS框架中指令的使用方法
2016/03/05 Javascript
JavaScript实现九九乘法表的简单实例
2016/06/07 Javascript
Javascript获取随机数的实现方法
2016/06/22 Javascript
nodejs获取微信小程序带参数二维码实现代码
2017/04/12 NodeJs
关于使用js算总价的问题
2017/06/23 Javascript
微信小程序 获取二维码实例详解
2017/06/23 Javascript
Grunt针对静态文件的压缩,版本控制打包的实例讲解
2017/09/29 Javascript
Vue项目使用CDN优化首屏加载问题
2018/04/01 Javascript
angularJs自定义过滤器实现手机号信息隐藏的方法
2018/10/08 Javascript
深入学习JavaScript中的bom
2019/05/27 Javascript
[01:55]《走出家门看比赛》——DOTA2 2015国际邀请赛同城线下观战
2015/07/18 DOTA
对于Python的Django框架使用的一些实用建议
2015/04/03 Python
使用Python的Treq on Twisted来进行HTTP压力测试
2015/04/16 Python
python2和python3实现在图片上加汉字的方法
2019/08/22 Python
在服务器上安装python3.8.2环境的教程详解
2020/04/26 Python
浅析Python 序列化与反序列化
2020/08/05 Python
五年级科学教学反思
2014/02/05 职场文书
积极向上的团队口号
2014/06/06 职场文书
交通安全责任书范本
2014/07/24 职场文书
校运会通讯稿
2015/07/18 职场文书
运动会运动员赞词
2015/07/22 职场文书
numpy array找出符合条件的数并赋值的示例代码
2022/06/01 Python