Python基于smtplib协议实现发送邮件


Posted in Python onJune 03, 2020

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。

python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。

Python创建 SMTP 对象语法如下:

import smtplib

smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )

参数说明:

  • host: SMTP 服务器主机。 你可以指定主机的ip地址或者域名如: runoob.com,这个是可选参数。
  • port: 如果你提供了 host 参数, 你需要指定 SMTP 服务使用的端口号,一般情况下 SMTP 端口号为25。
  • local_hostname: 如果 SMTP 在你的本机上,你只需要指定服务器地址为 localhost 即可。

代码如下

#coding=utf-8
"""
===========================
Author:多测师_王sir
Time:2020/5/20 17:24
Wechat:15367499889
Company:上海多测师信息有限公司
===========================
"""

import os
import smtplib
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from common.handleconfig import conf


def send_email(filename, title):
  """
  发送邮件的功能函数
  :param filename: 文件的路径
  :param title:  邮件的主题
  :return:
  """
  # 第一步:连接邮箱的smtp服务器,并登录
  smtp = smtplib.SMTP_SSL(host=conf.get("email", "host"), port=conf.getint("email", "port"))
  smtp.login(user=conf.get("email", "user"), password=conf.get("email", "pwd"))

  # 第二步:构建一封邮件
  # 创建一封多组件的邮件
  msg = MIMEMultipart()

  with open(filename, "rb") as f:
    content = f.read()
  # 创建邮件文本内容
  text_msg = MIMEText(content, _subtype="html", _charset="utf8")
  # 添加到多组件的邮件中
  msg.attach(text_msg)
  # 创建邮件的附件
  report_file = MIMEApplication(content)
  report_file.add_header('content-disposition', 'attachment', filename=os.path.split(filename)[-1])
  # 将附件添加到多组件的邮件中
  msg.attach(report_file)

  # 主题
  msg["Subject"] = title
  # 发件人
  msg["From"] = conf.get("email", "from_addr")
  # 收件人
  msg["To"] = conf.get("email", "to_addr")

  # 第三步:发送邮箱
  smtp.send_message(msg, from_addr=conf.get("email", "from_addr"), to_addrs=conf.get("email", "to_addr"))

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

Python 相关文章推荐
python模拟事件触发机制详解
Jan 19 Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
May 15 Python
python中for用来遍历range函数的方法
Jun 08 Python
解决python ogr shp字段写入中文乱码的问题
Dec 31 Python
Python设计模式之抽象工厂模式原理与用法详解
Jan 15 Python
Python中函数参数匹配模型详解
Jun 09 Python
Python 分享10个PyCharm技巧
Jul 13 Python
Django中Middleware中的函数详解
Jul 18 Python
将python包发布到PyPI和制作whl文件方式
Dec 25 Python
关于Python3爬虫利器Appium的安装步骤
Jul 29 Python
django跳转页面传参的实现
Sep 17 Python
使用Python通过oBIX协议访问Niagara数据的示例
Dec 04 Python
Pytorch环境搭建与基本语法
Jun 03 #Python
如何学习Python time模块
Jun 03 #Python
使用openCV去除文字中乱入的线条实例
Jun 02 #Python
Python能做什么
Jun 02 #Python
什么是Python中的匿名函数
Jun 02 #Python
学习python需要有编程基础吗
Jun 02 #Python
python中if及if-else如何使用
Jun 02 #Python
You might like
PHP中CURL方法curl_setopt()函数的参数分享
2013/01/19 PHP
PHP版 汉字转码的实现详解
2013/06/09 PHP
php操作access数据库的方法详解
2017/02/22 PHP
PHP让网站移动访问更加友好方法
2019/02/14 PHP
PHP实现的敏感词过滤方法示例
2019/03/06 PHP
PHP7新功能总结
2019/04/14 PHP
jQuery.Validate验证库的使用介绍
2013/04/26 Javascript
浅析JQuery获取和设置Select选项的常用方法总结
2013/07/04 Javascript
js window.open弹出新的网页窗口
2014/01/16 Javascript
推荐9款炫酷的基于jquery的页面特效
2014/12/07 Javascript
jQuery实现冻结表头的方法
2015/03/09 Javascript
JavaScript设计模式之单体模式全面解析
2016/09/09 Javascript
JavaScript中this的四个绑定规则总结
2016/09/26 Javascript
微信小程序 Storage API实例详解
2016/10/02 Javascript
微信小程序 wx.request(接口调用方式)详解及实例
2016/11/23 Javascript
进阶之初探nodeJS
2017/01/24 NodeJs
jQuery实现下拉菜单的实例代码
2017/06/19 jQuery
jquery实现搜索框功能实例详解
2018/07/23 jQuery
微信小程序实现swiper切换卡内嵌滚动条不显示的方法示例
2018/12/20 Javascript
使用element-ui table expand展开行实现手风琴效果
2019/03/15 Javascript
使用webpack/gulp构建TypeScript项目的方法示例
2019/12/18 Javascript
你可能从未使用过的11+个JavaScript特性(小结)
2020/01/08 Javascript
Vue项目前后端联调(使用proxyTable实现跨域方式)
2020/07/18 Javascript
vue3使用vue-count-to组件的实现
2020/12/25 Vue.js
python制作最美应用的爬虫
2015/10/28 Python
TensorFlow实现简单卷积神经网络
2018/05/24 Python
spark: RDD与DataFrame之间的相互转换方法
2018/06/07 Python
对python3 一组数值的归一化处理方法详解
2018/07/11 Python
如何使用Python进行OCR识别图片中的文字
2019/04/01 Python
Django分页功能的实现代码详解
2019/07/29 Python
Python找出列表中出现次数最多的元素三种方式
2020/02/24 Python
缅甸网上购物:Shop.com.mm
2017/12/05 全球购物
第二批党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
行政人事主管岗位职责
2015/04/11 职场文书
Python实战之疫苗研发情况可视化
2021/05/18 Python
python游戏开发Pygame框架
2022/04/22 Python