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对url格式解析的方法
May 13 Python
Tornado高并发处理方法实例代码
Jan 15 Python
Python脚本完成post接口测试的实例
Dec 17 Python
Python生成器的使用方法和示例代码
Mar 04 Python
Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】
Mar 18 Python
Python第三方库face_recognition在windows上的安装过程
May 03 Python
Python实现打砖块小游戏代码实例
May 18 Python
opencv python Canny边缘提取实现过程解析
Feb 03 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
Mar 23 Python
Python实现简单的2048小游戏
Mar 01 Python
解决Python字典查找报Keyerror的问题
May 26 Python
Python语法学习之进程的创建与常用方法详解
Apr 08 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执行速度全攻略
2006/10/09 PHP
一些常用的php简单命令代码集锦
2007/09/24 PHP
php header函数的常用http头设置
2015/06/25 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
2016/01/04 PHP
总结的一些PHP开发中的tips(必看篇)
2017/03/24 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
简单的php购物车代码
2020/06/05 PHP
麦鸡的TAB切换功能结合了javascript和css
2007/12/17 Javascript
js url传值中文乱码之解决之道
2009/11/20 Javascript
javascript按位非运算符的使用方法
2013/11/14 Javascript
js delete 用法(删除对象属性及变量)
2014/08/24 Javascript
关闭页面window.location事件未执行的原因及解决方法
2014/09/01 Javascript
21个JavaScript事件(Events)属性汇总
2014/12/02 Javascript
JavaScript+html5 canvas绘制渐变区域完整实例
2016/01/26 Javascript
浅析JS异步加载进度条
2016/05/05 Javascript
KnockoutJS 3.X API 第四章之事件event绑定
2016/10/10 Javascript
认识jQuery的Promise的具体使用方法
2017/10/10 jQuery
微信小程序radio组件使用详解
2018/01/31 Javascript
vuex页面刷新后数据丢失的方法
2019/01/17 Javascript
Element的el-tree控件后台数据结构的生成以及方法的抽取
2020/03/05 Javascript
通过实例解析vuejs如何实现调试代码
2020/07/16 Javascript
解决vue初始化项目一直停在downloading template的问题
2020/11/09 Javascript
Vue与React的区别和优势对比
2020/12/18 Vue.js
通过滑动翻页效果实现和移动端click事件问题
2021/01/26 Javascript
[02:28]DOTA2亚洲邀请赛附加赛 RECAP赛事回顾
2015/01/29 DOTA
Python实现抓取网页生成Excel文件的方法示例
2017/08/05 Python
不到20行代码用Python做一个智能聊天机器人
2019/04/19 Python
Python3 批量扫描端口的例子
2019/07/25 Python
通过实例解析python描述符原理作用
2020/01/22 Python
使用Html5 Stream开发实时监控系统
2020/06/02 HTML / CSS
行政办公室岗位职责
2014/03/18 职场文书
大学生入党自荐书
2015/03/05 职场文书
工程款申请报告
2015/05/15 职场文书
关于社会实践的心得体会(2016最新版)
2016/01/25 职场文书
JavaScript实现班级抽签小程序
2021/05/19 Javascript
MySQL into_Mysql中replace与replace into用法案例详解
2021/09/14 MySQL