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获取标准北京时间的方法
Mar 24 Python
Python2.7编程中SQLite3基本操作方法示例
Aug 09 Python
python实现列表中由数值查到索引的方法
Jun 27 Python
Win10下python3.5和python2.7环境变量配置教程
Sep 18 Python
pandas ix &iloc &loc的区别
Jan 10 Python
Python中如何导入类示例详解
Apr 17 Python
20行python代码实现人脸识别
May 05 Python
python二进制文件的转译详解
Jul 03 Python
python爬虫 批量下载zabbix文档代码实例
Aug 21 Python
详解python变量与数据类型
Aug 25 Python
python实现socket简单通信的示例代码
Apr 13 Python
利用Python实时获取steam特惠游戏数据
Jun 25 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 Cookie的一个使用注意点
2008/11/08 PHP
仿AS3实现PHP 事件机制实现代码
2011/01/27 PHP
PHP互换两个变量值的方法(不用第三变量)
2016/11/14 PHP
短信提示使用 特效
2007/01/19 Javascript
jQuery动态添加 input type=file的实现代码
2012/06/14 Javascript
javascript验证上传文件的类型限制必须为某些格式
2013/11/14 Javascript
两种方法基于jQuery实现IE浏览器兼容placeholder效果
2014/10/14 Javascript
jQuery制作拼图小游戏
2015/01/12 Javascript
checkbox批量选中,获取选中项的值的简单实例
2016/06/28 Javascript
Vue实现日历小插件
2019/06/26 Javascript
layui 富文本赋值,取值,取纯文本值的实例
2019/09/18 Javascript
WEB前端性能优化的7大手段详解
2020/02/04 Javascript
JavaScript运动原理基础知识详解
2020/04/02 Javascript
Openlayers实现地图的基本操作
2020/09/28 Javascript
小程序实现tab标签页
2020/11/16 Javascript
[01:01:42]Secret vs Optic Supermajor 胜者组 BO3 第二场 6.4
2018/06/05 DOTA
从局部变量和全局变量开始全面解析Python中变量的作用域
2016/06/16 Python
Python Django使用forms来实现评论功能
2016/08/17 Python
详解django中url路由配置及渲染方式
2019/02/25 Python
python异步存储数据详解
2019/03/19 Python
Python通用函数实现数组计算的方法
2019/06/13 Python
Django中提供的6种缓存方式详解
2019/08/05 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
2019/08/26 Python
Python字符串、列表、元组、字典、集合的补充实例详解
2019/12/20 Python
Python 脚本的三种执行方式小结
2019/12/21 Python
Python for循环与getitem的关系详解
2020/01/02 Python
TensorFlow tensor的拼接实例
2020/01/19 Python
python Autopep8实现按PEP8风格自动排版Python代码
2021/03/02 Python
有趣的流行文化T恤、马克杯、手机壳和更多:Look Human
2019/01/07 全球购物
意大利咖啡、浓缩咖啡和浓缩咖啡机:illy caffe
2019/03/20 全球购物
如何在C# winform中异步调用web services
2015/09/21 面试题
运动会通讯稿500字
2014/02/20 职场文书
学历公证书范本
2014/04/09 职场文书
学生保证书范文
2014/04/28 职场文书
小学生光盘行动倡议书
2015/04/28 职场文书
立春观后感
2015/06/18 职场文书