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实现搜索本地文件信息写入文件的方法
Feb 22 Python
Python的网络编程库Gevent的安装及使用技巧
Jun 24 Python
Python开发的HTTP库requests详解
Aug 29 Python
Python实现自动发送邮件功能
Mar 02 Python
python基础教程项目三之万能的XML
Apr 02 Python
基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
May 16 Python
把JSON数据格式转换为Python的类对象方法详解(两种方法)
Jun 04 Python
Python读取YAML文件过程详解
Dec 30 Python
使用Dajngo 通过代码添加xadmin用户和权限(组)
Jul 03 Python
Python json格式化打印实现过程解析
Jul 21 Python
pyqt5 textEdit、lineEdit操作的示例代码
Aug 12 Python
教你怎么用Python操作MySql数据库
May 31 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学习之数组的定义和填充
2011/04/17 PHP
学习php设计模式 php实现命令模式(command)
2015/12/08 PHP
PHP实现的获取文件mimes类型工具类示例
2018/04/08 PHP
Javascript实现的鼠标经过时播放声音
2010/05/18 Javascript
js null,undefined,字符串小结
2010/08/21 Javascript
jQuery将多条数据插入模态框的示例代码
2014/09/25 Javascript
JQuery查找DOM节点的方法
2015/06/11 Javascript
使用BootStrap实现悬浮窗口的效果
2016/12/13 Javascript
jQuery中绑定事件bind() on() live() one()的异同
2017/02/23 Javascript
jquery 禁止鼠标右键并监听右键事件
2017/04/27 jQuery
js Element Traversal规范中的元素遍历方法
2018/04/19 Javascript
微信小程序第三方框架对比 之 wepy / mpvue / taro
2019/04/10 Javascript
QML实现圆环颜色选择器
2019/09/25 Javascript
[00:26]TI7不朽珍藏III——冥界亚龙不朽展示
2017/07/15 DOTA
详解Python中的Numpy、SciPy、MatPlotLib安装与配置
2017/11/17 Python
Python3 伪装浏览器的方法示例
2017/11/23 Python
python创建列表和向列表添加元素的实现方法
2017/12/25 Python
Python实现进程同步和通信的方法
2018/01/02 Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
2020/09/17 Python
Python API len函数操作过程解析
2020/03/05 Python
Jupyter notebook如何实现指定浏览器打开
2020/05/13 Python
Python经典五人分鱼实例讲解
2021/01/04 Python
简单聊聊H5的pushState与replaceState的用法
2018/04/03 HTML / CSS
印尼在线购买隐形眼镜网站:Lensza.co.id
2019/04/27 全球购物
英国户外服装、鞋类和设备的领先零售商:Millets
2020/10/12 全球购物
Java如何支持I18N?
2016/10/31 面试题
入党自我鉴定范文
2013/10/04 职场文书
汽车专业人才自我鉴定范文
2013/12/29 职场文书
初中同学聚会感言
2014/02/11 职场文书
社区网格化管理实施方案
2014/03/21 职场文书
国旗下演讲稿
2014/05/08 职场文书
乡镇四风对照检查材料
2014/08/31 职场文书
python中Tkinter 窗口之输入框和文本框的实现
2021/04/12 Python
python spilt()分隔字符串的实现示例
2021/05/21 Python
我去timi了,一起去timi是什么意思?
2022/04/13 杂记
mysql字段为NULL索引是否会失效实例详解
2022/05/30 MySQL