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中使用item()方法遍历字典的例子
Aug 26 Python
用Python制作简单的钢琴程序的教程
Apr 01 Python
python字典的常用操作方法小结
May 16 Python
Python进阶之递归函数的用法及其示例
Jan 31 Python
Python实现获取前100组勾股数的方法示例
May 04 Python
Django中使用第三方登录的示例代码
Aug 20 Python
Python多进程池 multiprocessing Pool用法示例
Sep 07 Python
python 函数内部修改外部变量的方法
Dec 18 Python
六行python代码的爱心曲线详解
May 17 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
Aug 30 Python
pandas数据处理进阶详解
Oct 11 Python
卸载tensorflow-cpu重装tensorflow-gpu操作
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表单转换textarea换行符的方法
2010/09/10 PHP
CodeIgniter辅助之第三方类库third_party用法分析
2016/01/20 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
为原生js Array增加each方法
2012/04/07 Javascript
几种延迟加载JS代码的方法加快网页的访问速度
2013/10/12 Javascript
关闭ie窗口清除Session的解决方法
2014/01/10 Javascript
使用Jquery获取带特殊符号的ID 标签的方法
2014/04/30 Javascript
Angular用来控制元素的展示与否的原生指令介绍
2015/01/07 Javascript
js倒计时抢购实例
2015/12/20 Javascript
基于JavaScript代码实现微信扫一扫下载APP
2015/12/30 Javascript
深入解析JavaScript中的立即执行函数
2016/05/21 Javascript
Bootstrap CSS组件之导航条(navbar)
2016/12/17 Javascript
angular.fromJson与toJson方法用法示例
2017/05/17 Javascript
基于Vue生产环境部署详解
2017/09/15 Javascript
详解如何更好的使用module vuex
2019/03/27 Javascript
微信小程序在其他页面监听globalData中值的变化
2019/07/15 Javascript
ES6基础之数组和对象的拓展实例详解
2019/08/22 Javascript
vue添加自定义右键菜单的完整实例
2020/12/08 Vue.js
[03:39]DOTA2英雄梦之声_第05期_幽鬼
2014/06/23 DOTA
Python中subprocess的简单使用示例
2015/07/28 Python
浅谈Python数据类型判断及列表脚本操作
2016/11/04 Python
Python使用add_subplot与subplot画子图操作示例
2018/06/01 Python
Python实现的序列化和反序列化二叉树算法示例
2019/03/02 Python
python plotly画柱状图代码实例
2019/12/13 Python
Python restful框架接口开发实现
2020/04/13 Python
python线程优先级队列知识点总结
2021/02/28 Python
HTML5 window/iframe跨域传递消息 API介绍
2013/08/26 HTML / CSS
Jacadi Paris美国官方网站:法国童装品牌
2017/10/15 全球购物
如何用Python来进行查询和替换一个文本字符串
2014/01/02 面试题
区域销售经理岗位职责
2013/12/10 职场文书
酒店人事专员岗位职责
2013/12/19 职场文书
坚定理想信念心得体会
2014/03/11 职场文书
预备党员介绍人意见
2015/06/01 职场文书
Go 语言中 20 个占位符的整理
2021/10/16 Golang
MongoDB数据库之添删改查
2022/04/26 MongoDB
box-shadow单边阴影的实现
2023/05/21 HTML / CSS