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中bisect模块用法实例
Sep 25 Python
python实现web方式logview的方法
Aug 10 Python
简单实现python进度条脚本
Dec 18 Python
python模拟登陆,用session维持回话的实例
Dec 27 Python
Pycharm如何打断点的方法步骤
Jun 13 Python
python3获取当前目录的实现方法
Jul 29 Python
python3.7 openpyxl 删除指定一列或者一行的代码
Oct 08 Python
Python2手动安装更新pip过程实例解析
Jul 16 Python
高考考python编程是真的吗
Jul 20 Python
Python3如何实现Win10桌面自动切换
Aug 11 Python
关于django python manage.py startapp 应用名出错异常原因解析
Dec 15 Python
Python OpenCV超详细讲解基本功能
Apr 02 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
第十节 抽象方法和抽象类 [10]
2006/10/09 PHP
一个简单的PHP入门源程序
2006/10/09 PHP
关于php内存不够用的快速解决方法
2013/10/26 PHP
php 基础函数
2017/02/10 PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
2019/05/29 PHP
img onload事件绑定各浏览器均可执行
2012/12/19 Javascript
基于JQuery的列表拖动排序实现代码
2013/10/01 Javascript
jQuery 顶部导航跟随滚动条滚动固定浮动在顶部
2014/06/06 Javascript
js实现特定位取反原理及示例
2014/06/30 Javascript
jQuery获得包含margin的outerWidth和outerHeight的方法
2015/03/25 Javascript
jquery实现动态改变div宽度和高度
2015/05/08 Javascript
充分发挥Node.js程序性能的一些方法介绍
2015/06/23 Javascript
javascript检查浏览器是否已经启用XX功能
2015/07/10 Javascript
jQuery+css实现的切换图片功能代码
2016/01/27 Javascript
详解Node.js模块间共享数据库连接的方法
2016/05/24 Javascript
ReactNative列表ListView的用法
2017/08/02 Javascript
Angular使用Md5加密的解决方法
2017/09/16 Javascript
Javascript实现秒表倒计时功能
2018/11/17 Javascript
vue实现购物车抛物线小球动画效果的方法详解
2019/02/13 Javascript
详解基于mpvue微信小程序下载远程图片到本地解决思路
2019/05/16 Javascript
原生js实现文件上传、下载、封装等实例方法
2020/01/05 Javascript
Python中使用装饰器来优化尾递归的示例
2016/06/18 Python
django 修改server端口号的方法
2018/05/14 Python
在python中利用try..except来代替if..else的用法
2019/12/19 Python
Jupyter Notebook 实现正常显示中文和负号
2020/04/24 Python
Python Pandas list列表数据列拆分成多行的方法实现
2020/12/14 Python
使用CSS3的::selection改变选中文本颜色的方法
2015/09/29 HTML / CSS
美国当红的名品折扣网:Gilt Groupe
2016/08/15 全球购物
Mountain Warehouse澳大利亚官网:欧洲家庭户外品牌倡导者
2016/11/20 全球购物
品质主管的岗位职责
2013/12/04 职场文书
品德评语大全
2014/05/05 职场文书
车辆年检委托书范本
2014/10/14 职场文书
2014年幼儿园保育工作总结
2014/12/02 职场文书
留学推荐信中文范文
2015/03/26 职场文书
农民工工资保障承诺书
2015/05/04 职场文书
大学生团支书竞选稿
2015/11/21 职场文书