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 04 Python
python使用多线程不断刷新网页的方法
Mar 31 Python
Python中属性和描述符的正确使用
Aug 23 Python
python数据类型判断type与isinstance的区别实例解析
Oct 31 Python
用python处理图片之打开\显示\保存图像的方法
May 04 Python
python ftp 按目录结构上传下载的实现代码
Sep 12 Python
解决python3中的requests解析中文页面出现乱码问题
Apr 19 Python
Python 20行简单实现有道在线翻译的详解
May 15 Python
python 实现将list转成字符串,中间用空格隔开
Dec 25 Python
详解pycharm2020.1.1专业版安装指南(推荐)
Aug 07 Python
用 Django 开发一个 Python Web API的方法步骤
Dec 03 Python
java字符串格式化输出实例讲解
Jan 06 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中的float类型使用说明
2010/07/27 PHP
自己写的兼容低于PHP 5.5版本的array_column()函数
2014/10/24 PHP
php实现遍历多维数组的方法
2015/11/25 PHP
PHP编写学校网站上新生注册登陆程序的实例分享
2016/03/21 PHP
用正则表达式 动态创建/增加css style script 兼容IE firefox
2009/03/10 Javascript
获取HTML DOM节点元素的方法的总结
2009/08/21 Javascript
node.js学习总结之调式代码的方法
2014/06/25 Javascript
JavaScript表格常用操作方法汇总
2015/04/15 Javascript
限制文本框只能输入数字||只能是数字和小数点||只能是整数和浮点数
2016/05/27 Javascript
jquery中用jsonp实现搜索框功能
2016/10/18 Javascript
如何使用vuejs实现更好的Form validation?
2017/04/07 Javascript
javascript实现二叉树的代码
2017/06/08 Javascript
详解webpack提取第三方库的正确姿势
2017/12/22 Javascript
关于Mac下安装nodejs、npm和cnpm的教程
2018/04/11 NodeJs
详解JavaScript中的坐标和距离
2019/05/27 Javascript
vue 实现走马灯效果
2019/10/28 Javascript
解决VueCil代理本地proxytable无效报错404的问题
2020/11/07 Javascript
Vue与React的区别和优势对比
2020/12/18 Vue.js
[01:27:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第一场 1月24日
2021/03/11 DOTA
python3.4下django集成使用xadmin后台的方法
2017/08/15 Python
Python构建网页爬虫原理分析
2017/12/19 Python
Python基于TCP实现会聊天的小机器人功能示例
2018/04/09 Python
Python实现base64编码的图片保存到本地功能示例
2018/06/22 Python
python写一个随机点名软件的实例
2019/11/28 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
2020/03/04 Python
Python configparser模块操作代码实例
2020/06/08 Python
flask框架中的cookie和session使用
2021/01/31 Python
波兰家具和室内装饰品购物网站:Vivre
2018/04/10 全球购物
新闻学专业大学生职业生涯规划范文
2014/03/02 职场文书
上党课的心得体会
2014/09/02 职场文书
干部作风整顿自我剖析材料和整改措施
2014/09/18 职场文书
2014年煤矿工作总结
2014/11/24 职场文书
2015新年寄语大全
2014/12/08 职场文书
检讨书范文500字
2015/01/28 职场文书
Win10系统下配置Java环境变量
2021/06/13 Java/Android
Redis入门教程详解
2021/08/30 Redis