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中的__new__()方法的使用
Apr 09 Python
Python打印斐波拉契数列实例
Jul 07 Python
Python并发编程协程(Coroutine)之Gevent详解
Dec 27 Python
Python绘制堆叠柱状图的实例
Jul 09 Python
使用Python轻松完成垃圾分类(基于图像识别)
Jul 09 Python
python zip()函数使用方法解析
Oct 31 Python
python时间日期操作方法实例小结
Feb 06 Python
深入理解Python 多线程
Jun 16 Python
Python openpyxl模块实现excel读写操作
Jun 30 Python
Python 如何调试程序崩溃错误
Aug 03 Python
Django REST Framework 分页(Pagination)详解
Nov 30 Python
PyTorch 如何设置随机数种子使结果可复现
May 12 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分页思路以及在ZF中的使用
2012/05/30 PHP
解决PHP超大文件下载,断点续传下载的方法详解
2013/06/06 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
php+laravel依赖注入知识点总结
2019/11/04 PHP
JS连接SQL数据库与ACCESS数据库的方法实例
2013/11/21 Javascript
jquery如何获取复选框的值
2013/12/12 Javascript
IE与FireFox的JavaScript兼容问题解决办法
2013/12/31 Javascript
将中国标准时间转换成标准格式的代码
2014/03/20 Javascript
jQuery scroll事件实现监控滚动条分页示例
2014/04/04 Javascript
node.js正则表达式获取网页中所有链接的代码实例
2014/06/03 Javascript
jQuery弹出框代码封装DialogHelper
2015/01/30 Javascript
Angularjs使用directive自定义指令实现attribute继承的方法详解
2016/08/05 Javascript
connection reset by peer问题总结及解决方案
2016/10/21 Javascript
Javascript 制作图形验证码实例详解
2016/12/22 Javascript
Vue.js实现微信过渡动画左右切换效果
2017/06/13 Javascript
Javascript快速实现浏览器系统通知
2017/08/26 Javascript
vue项目在安卓低版本机显示空白的原因分析(两种)
2018/09/04 Javascript
微信小程序mpvue点击按钮获取button值的方法
2019/05/29 Javascript
vue实现二级导航栏效果
2019/10/19 Javascript
vuex管理状态 刷新页面保持不被清空的解决方案
2019/11/11 Javascript
python遍历类中所有成员的方法
2015/03/18 Python
Android分包MultiDex策略详解
2017/10/30 Python
Django中针对基于类的视图添加csrf_exempt实例代码
2018/02/11 Python
Python Pillow Image Invert
2019/01/22 Python
Python通用函数实现数组计算的方法
2019/06/13 Python
解决pycharm remote deployment 配置的问题
2019/06/27 Python
pywinauto自动化操作记事本
2019/08/26 Python
浅析python标准库中的glob
2020/03/13 Python
使用Python文件读写,自定义分隔符(custom delimiter)
2020/07/05 Python
给Django Admin添加验证码和多次登录尝试限制的实现
2020/07/26 Python
matplotlib阶梯图的实现(step())
2021/03/02 Python
澳大利亚药房在线:ThePharmacy
2017/10/04 全球购物
英国复古皮包品牌:Beara Beara
2018/07/18 全球购物
高中生自我鉴定范文
2013/10/30 职场文书
会计专业自荐信范文
2013/12/02 职场文书
在Java中Collection的一些常用方法总结
2021/06/13 Java/Android