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中yield关键词的作用与用法
Nov 29 Python
python修改list中所有元素类型的三种方法
Apr 09 Python
使用pandas对矢量化数据进行替换处理的方法
Apr 11 Python
python实现电脑自动关机
Jun 20 Python
python入门:这篇文章带你直接学会python
Sep 14 Python
python得到单词模式的示例
Oct 15 Python
对python中的乘法dot和对应分量相乘multiply详解
Nov 14 Python
使用Pyinstaller转换.py文件为.exe可执行程序过程详解
Aug 06 Python
Python利用WMI实现ping命令的例子
Aug 14 Python
Python之Class&Object用法详解
Dec 25 Python
python实现大文本文件分割成多个小文件
Apr 20 Python
关于的python五子棋的算法
May 02 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
德生H-501的评价与改造
2021/03/02 无线电
浅析ThinkPHP的模板输出功能
2014/07/01 PHP
ThinkPHP写数组插入与获取最新插入数据ID实例
2014/11/03 PHP
php上传图片生成缩略图(GD库)
2016/01/06 PHP
PHP高精确度运算BC函数库实例详解
2017/08/15 PHP
常用一些Javascript判断函数
2012/08/14 Javascript
php显示当前文件所在的文件以及文件夹所有文件以树形展开
2013/12/13 Javascript
JQuery给元素绑定click事件多次执行的解决方法
2014/05/29 Javascript
原生javascript实现获取指定元素下所有后代元素的方法
2014/10/28 Javascript
jQuery 中$(this).index与$.each的使用指南
2014/11/20 Javascript
jQuery通过控制节点实现仅在前台通过get方法完成参数传递
2015/02/02 Javascript
jQuery验证元素是否为空的两种常用方法
2015/03/17 Javascript
js实现的二分查找算法实例
2016/01/21 Javascript
jquery单击事件和双击事件冲突解决方案
2016/03/02 Javascript
JavaScript简单实现弹出拖拽窗口(一)
2016/06/17 Javascript
js实现3d悬浮效果
2017/02/16 Javascript
vue 基于element-ui 分页组件封装的实例代码
2018/12/10 Javascript
JS中数据结构之栈
2019/01/01 Javascript
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
2019/02/20 jQuery
JavaScript实现选项卡效果的分析及步骤
2019/04/16 Javascript
关于Vue源码vm.$watch()内部原理详解
2019/04/26 Javascript
vue中使用腾讯云Im的示例
2020/10/23 Javascript
Python中的异常处理简明介绍
2015/04/13 Python
python实现图片批量压缩程序
2018/07/23 Python
python无限生成不重复(字母,数字,字符)组合的方法
2018/12/04 Python
Python3 sys.argv[ ]用法详解
2019/10/24 Python
Python 读取 YUV(NV12) 视频文件实例
2019/12/09 Python
pycharm 实现调试窗口恢复
2021/02/05 Python
新加坡时尚网上购物:Zalora新加坡
2016/07/26 全球购物
adidas官方旗舰店:德国运动用品制造商
2017/11/25 全球购物
九月份红领巾广播稿
2014/01/22 职场文书
单位委托书范本
2014/04/04 职场文书
乡镇八一建军节活动方案
2014/08/24 职场文书
2015年班组建设工作总结
2015/05/13 职场文书
信息简报范文
2015/07/21 职场文书
浅谈Java实现分布式事务的三种方案
2021/06/11 Java/Android