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运行的17个时新手常见错误小结
Aug 07 Python
python获取网页状态码示例
Mar 30 Python
python实现删除文件与目录的方法
Nov 10 Python
python中子类继承父类的__init__方法实例
Dec 15 Python
python操作文件的参数整理
Jun 11 Python
Django框架模型简单介绍与使用分析
Jul 18 Python
Python中list的交、并、差集获取方法示例
Aug 01 Python
在Python中实现函数重载的示例代码
Dec 12 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
Mar 10 Python
python 链接sqlserver 写接口实例
Mar 11 Python
python自动生成sql语句的脚本
Feb 24 Python
python基础之函数的定义和调用
Oct 24 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实现的支持断点续传的文件下载类
2014/09/23 PHP
利用PHP函数计算中英文字符串长度的方法
2014/11/11 PHP
动态修改DOM 里面的 id 属性的弊端分析
2008/09/03 Javascript
使弱类型的语言JavaScript变强势
2009/06/22 Javascript
基于jquery的划词搜索实现(备忘)
2010/09/14 Javascript
返回对象在当前级别中是第几个元素的实现代码
2011/01/20 Javascript
单击复制文字兼容各浏览器的完美解决方案
2013/07/04 Javascript
jQuery添加删除DOM元素方法详解
2016/01/18 Javascript
全面解析Bootstrap中nav、collapse的使用方法
2016/05/22 Javascript
基于JS实现无缝滚动思路及代码分享
2016/06/07 Javascript
简单理解vue中el、template、replace元素
2016/10/27 Javascript
Jquery鼠标放上去显示全名的实现方法
2017/02/06 Javascript
vue图片加载与显示默认图片实例代码
2017/03/16 Javascript
vue组件初学_弹射小球(实例讲解)
2017/09/06 Javascript
基于vue 开发中出现警告问题去除方法
2018/01/25 Javascript
基于element-ui组件手动实现单选和上传功能
2018/12/06 Javascript
JS通过识别id、value值对checkbox设置选中状态
2020/02/19 Javascript
element el-tree组件的动态加载、新增、更新节点的实现
2020/02/27 Javascript
详解Python实现多进程异步事件驱动引擎
2017/08/25 Python
Python 关于反射和类的特殊成员方法
2017/09/14 Python
python3解析库BeautifulSoup4的安装配置与基本用法
2018/06/26 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
2019/06/24 Python
使用APScheduler3.0.1 实现定时任务的方法
2019/07/22 Python
Django外键(ForeignKey)操作以及related_name的作用详解
2019/07/29 Python
详解python中docx库的安装过程
2019/11/08 Python
python读取配置文件方式(ini、yaml、xml)
2020/04/09 Python
RetroStage德国:复古服装
2019/02/03 全球购物
文言文形式的学生求职信
2013/12/03 职场文书
园林毕业生自我鉴定范文
2013/12/29 职场文书
信息技术教学反思
2014/02/12 职场文书
聘用意向书
2014/07/29 职场文书
商家认证委托书格式
2014/10/16 职场文书
上班迟到检讨书范文300字
2014/11/02 职场文书
服务整改报告
2014/11/06 职场文书
红楼梦读书笔记
2015/06/25 职场文书
2019年市场部个人述职报告(三篇)
2019/10/23 职场文书