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 28 Python
Python3如何解决字符编码问题详解
Apr 23 Python
Python scikit-learn 做线性回归的示例代码
Nov 01 Python
python kmeans聚类简单介绍和实现代码
Feb 23 Python
python opencv之SIFT算法示例
Feb 24 Python
Python实现读取Properties配置文件的方法
Mar 29 Python
Python迭代器定义与简单用法分析
Apr 30 Python
基于Python打造账号共享浏览器功能
May 30 Python
python3光学字符识别模块tesserocr与pytesseract的使用详解
Feb 26 Python
20行Python代码实现视频字符化功能
Apr 13 Python
通俗讲解python 装饰器
Sep 07 Python
python批量生成条形码的示例
Oct 10 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代码
2016/08/08 PHP
PHP用函数嵌入网站访问量计数器
2017/10/27 PHP
关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
2020/07/13 PHP
IE event.srcElement和FF event.target 功能比较
2010/03/01 Javascript
基于jquery的动态创建表格的插件
2011/04/05 Javascript
js setTimeout 常见问题小结
2013/08/13 Javascript
javascript中为某个元素指定事件的三种方式
2014/08/07 Javascript
KnockoutJS 3.X API 第四章之数据控制流foreach绑定
2016/10/10 Javascript
Vue.js中extend选项和delimiters选项的比较
2017/07/17 Javascript
JS获取本地地址及天气的方法实例小结
2019/05/10 Javascript
Antd下拉选择,自动匹配功能的实现
2020/10/24 Javascript
Python 2.7.x 和 3.x 版本的重要区别小结
2014/11/28 Python
python通过exifread模块获得图片exif信息的方法
2015/03/16 Python
python开发之基于thread线程搜索本地文件的方法
2015/11/11 Python
python监控linux内存并写入mongodb(推荐)
2017/09/11 Python
使用pandas读取csv文件的指定列方法
2018/04/21 Python
OPENCV去除小连通区域,去除孔洞的实例讲解
2018/06/21 Python
python构建基础的爬虫教学
2018/12/23 Python
Python3.5内置模块之random模块用法实例分析
2019/04/26 Python
详解Django3中直接添加Websockets方式
2020/02/12 Python
Pytorch中的自动求梯度机制和Variable类实例
2020/02/29 Python
matplotlib subplot绘制多个子图的方法示例
2020/07/28 Python
解决使用Pandas 读取超过65536行的Excel文件问题
2020/11/10 Python
python+flask编写一个简单的登录接口
2020/11/13 Python
专门经营化妆刷的美国彩妆品牌:Sigma Beauty
2017/09/11 全球购物
巴西本土电商平台:Americanas
2020/06/21 全球购物
如何判断计算机可能已经中马
2013/03/22 面试题
企划专员岗位职责
2013/12/09 职场文书
客服工作职责
2013/12/11 职场文书
企业指导教师评语
2014/04/28 职场文书
电子商务系毕业生自荐信
2014/05/29 职场文书
国际政治学专业推荐信
2014/09/26 职场文书
介绍信如何写
2015/01/31 职场文书
MySQL中的布尔值,怎么存储false或true
2021/06/04 MySQL
详解Python为什么不用设计模式
2021/06/24 Python
TV动画「神渣☆爱豆」公开第一弹主视觉图
2022/03/21 日漫