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中实现两个字典(dict)合并的方法
Sep 23 Python
python中随机函数random用法实例
Apr 30 Python
Python类的定义、继承及类对象使用方法简明教程
May 08 Python
Python读取Excel的方法实例分析
Jul 11 Python
Python利用正则表达式匹配并截取指定子串及去重的方法
Jul 30 Python
Python 数据结构之队列的实现
Jan 22 Python
Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例
Aug 07 Python
wxpython+pymysql实现用户登陆功能
Nov 19 Python
使用pandas实现连续数据的离散化处理方式(分箱操作)
Nov 22 Python
python实现的分析并统计nginx日志数据功能示例
Dec 21 Python
3种python调用其他脚本的方法
Jan 06 Python
为什么python比较流行
Jun 19 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的FTP学习(四)
2006/10/09 PHP
ezSQL PHP数据库操作类库
2010/05/16 PHP
PHP解码unicode编码的中文字符代码分享
2014/08/13 PHP
php计算2个日期的差值函数分享
2015/02/02 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
从Ajax到JQuery Ajax学习
2007/02/14 Javascript
脚本安需导入(装载)的三种模式的对比
2007/06/24 Javascript
juqery 学习之三 选择器 层级 基本
2010/11/25 Javascript
jquery实现图片滚动效果的简单实例
2013/11/23 Javascript
js控制iframe的高度/宽度让其自适应内容
2014/04/09 Javascript
jquery实现通用版鼠标经过淡入淡出效果
2014/06/15 Javascript
浅谈jQuery构造函数分析
2015/05/11 Javascript
浅谈$(document)和$(window)的区别
2015/07/15 Javascript
JS类的定义与使用方法深入探索
2016/11/26 Javascript
20行JS代码实现网页刮刮乐效果
2017/06/23 Javascript
Easyui ueditor 整合解决不能编辑的问题(推荐)
2017/06/25 Javascript
LayerClose弹窗关闭刷新方法
2018/08/17 Javascript
vue实现类似淘宝商品评价页面星级评价及上传多张图片功能
2018/10/29 Javascript
Nodejs 识别图片类型的方法
2019/08/15 NodeJs
layui表格 列自动适应大小失效的解决方法
2019/09/06 Javascript
react结合bootstrap实现评论功能
2020/05/30 Javascript
[02:30]辉夜杯主赛事第二日胜者组半决赛 CDEC.Y赛后采访
2015/12/26 DOTA
[54:02]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 IG vs VGJ.T
2018/04/03 DOTA
Python 3中的yield from语法详解
2017/01/18 Python
Linux下Python安装完成后使用pip命令的详细教程
2018/11/22 Python
python实现连连看辅助(图像识别)
2020/03/25 Python
python 根据字典的键值进行排序的方法
2019/07/24 Python
Python+numpy实现矩阵的行列扩展方式
2019/11/29 Python
Anaconda和ipython环境适配的实现
2020/04/22 Python
浅谈keras使用预训练模型vgg16分类,损失和准确度不变
2020/07/02 Python
三星美国官网:Samsung美国
2017/02/06 全球购物
Brydge英国:适用于Apple iPad和Microsoft Surface Pro的蓝牙键盘
2019/05/16 全球购物
Alexandre Birman美国官网:亚历山大·伯曼
2019/10/30 全球购物
澳大利亚排名第一的露营和户外设备在线零售商:Outbax
2020/05/06 全球购物
承兑汇票延期证明
2015/06/23 职场文书
如何拟写通知正文?
2019/04/02 职场文书