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中实现对Timestamp和Datetime及UTC时间之间的转换
Apr 08 Python
分析Python中设计模式之Decorator装饰器模式的要点
Mar 02 Python
详解python之简单主机批量管理工具
Jan 27 Python
python中安装Scrapy模块依赖包汇总
Jul 02 Python
windows下安装Python的XlsxWriter模块方法
May 03 Python
python 实现A*算法的示例代码
Aug 13 Python
浅谈Python traceback的优雅处理
Aug 31 Python
python对于requests的封装方法详解
Jan 03 Python
python命令行参数用法实例分析
Jun 25 Python
python tkinter窗口最大化的实现
Jul 15 Python
cProfile Python性能分析工具使用详解
Jul 22 Python
django-crontab实现服务端的定时任务的示例代码
Feb 17 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/11/25 PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
2019/04/03 PHP
基于laravel where的高级使用方法
2019/10/10 PHP
javascript使用定时函数实现跳转到某个页面
2013/12/25 Javascript
html文档中的location对象属性理解及常见的用法
2014/08/13 Javascript
深入理解JavaScript系列(29):设计模式之装饰者模式详解
2015/03/03 Javascript
后端接收不到AngularJs中$http.post发送的数据原因分析及解决办法
2016/07/05 Javascript
Bootstrap进度条学习使用
2017/02/09 Javascript
JavaScript实现向select下拉框中添加和删除元素的方法
2017/03/07 Javascript
nodejs和C语言插入mysql数据库乱码问题的解决方法
2017/04/14 NodeJs
JavaScript正则表达式校验与递归函数实际应用实例解析
2017/08/04 Javascript
使用jQuery实现简单的tab框实例
2017/08/22 jQuery
angularJS自定义directive之带参方法传递详解
2018/10/09 Javascript
vue与bootstrap实现简单用户信息添加删除功能
2019/02/15 Javascript
关于vue-cli 3配置打包优化要点(推荐)
2019/04/22 Javascript
vue2.0+SVG实现音乐播放圆形进度条组件
2019/09/21 Javascript
vue打开新窗口并实现传参的图文实例
2021/03/04 Vue.js
VScode编写第一个Python程序HelloWorld步骤
2018/04/06 Python
对numpy中向量式三目运算符详解
2018/10/31 Python
详解python itertools功能
2020/02/07 Python
Python数据库封装实现代码示例解析
2020/09/05 Python
CSS3 background-image颜色渐变的实现代码
2018/09/13 HTML / CSS
波兰化妆品和护肤品购物网站:eKobieca
2019/08/30 全球购物
优秀应届毕业生自荐信
2013/11/16 职场文书
浙江文明网签名寄语
2014/01/18 职场文书
餐厅销售主管职责范本
2014/02/19 职场文书
计生专干事迹
2014/05/28 职场文书
旅游活动总结
2014/08/27 职场文书
感恩教师节演讲稿
2014/09/03 职场文书
生活小常识广播稿
2014/09/16 职场文书
开展党的群众路线教育实践活动情况汇报
2014/11/05 职场文书
商场收银员岗位职责
2015/04/07 职场文书
就业证明函
2015/06/17 职场文书
2015年十月一日放假通知
2015/08/18 职场文书
2016年小学“我们的节日·中秋节”活动总结
2016/04/05 职场文书
Java实战之课程信息管理系统的实现
2022/04/01 Java/Android