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中列表(list)操作方法汇总
Aug 18 Python
Python3读取UTF-8文件及统计文件行数的方法
May 22 Python
Python类属性的延迟计算
Oct 22 Python
Python使用回溯法子集树模板解决爬楼梯问题示例
Sep 08 Python
用python与文件进行交互的方法
Mar 01 Python
python复制文件到指定目录的实例
Apr 27 Python
python2.7实现爬虫网页数据
May 25 Python
python 将大文件切分为多个小文件的实例
Jan 14 Python
Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解
Feb 10 Python
python 解决mysql where in 对列表(list,,array)问题
Jun 06 Python
Django form表单与请求的生命周期步骤详解
Jun 07 Python
Python 实现二叉查找树的示例代码
Dec 21 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
推荐文章系统(一)
2006/10/09 PHP
php中使用addslashes函数报错问题的解决方法
2013/02/06 PHP
PHP通过CURL实现定时任务的图片抓取功能示例
2016/10/03 PHP
PHPMailer使用QQ邮箱实现邮件发送功能
2017/08/18 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
js 代码集(学习js的朋友可以看下)
2009/07/22 Javascript
Jquery中显示隐藏的实现代码分析
2011/07/26 Javascript
Extjs中ComboBox加载并赋初值的实现方法
2012/03/22 Javascript
5个最佳的Javascript日期处理类库分享
2012/04/15 Javascript
javascript中比较字符串是否相等的方法
2013/07/23 Javascript
Javascript基础 函数“重载” 详细介绍
2013/10/25 Javascript
jquery插件jquery.confirm弹出确认消息
2015/12/22 Javascript
JS控制静态页面之间传递参数获取参数并应用的简单实例
2016/08/10 Javascript
关于webuploader插件使用过程遇到的小问题
2016/11/07 Javascript
angular实现表单验证及提交功能
2017/02/01 Javascript
jquery实现自适应banner焦点图
2017/02/16 Javascript
Vue.js -- 过滤器使用总结
2017/02/18 Javascript
vue 解决遍历对象显示的顺序不对问题
2019/11/07 Javascript
Python中文竖排显示的方法
2015/07/28 Python
python安装与使用redis的方法
2016/04/19 Python
在django中使用自定义标签实现分页功能
2017/07/04 Python
python PyTorch预训练示例
2018/02/11 Python
Python3.6基于正则实现的计算器示例【无优化简单注释版】
2018/06/14 Python
Python从Excel中读取日期一列的方法
2018/11/28 Python
python 图像的离散傅立叶变换实例
2020/01/02 Python
python3发送request请求及查看返回结果实例
2020/04/30 Python
俄罗斯街头服装品牌:Black Star Wear
2017/03/01 全球购物
波兰香水和化妆品购物网站:Notino.pl
2017/11/07 全球购物
旧时光糖果:Old Time Candy
2018/02/05 全球购物
请写出 BOOL flag 与"零值"比较的 if 语句
2016/02/29 面试题
青年创业培训欢迎词
2014/01/08 职场文书
教师节大会主持词
2015/07/06 职场文书
大学生创业计划书
2019/06/24 职场文书
python如何读取.mtx文件
2021/04/22 Python
vue使用element-ui按需引入
2022/05/20 Vue.js