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使用百度翻译进行中翻英示例
Apr 14 Python
Python实现将Excel转换为json的方法示例
Aug 05 Python
python利用正则表达式搜索单词示例代码
Sep 24 Python
Python编程django实现同一个ip十分钟内只能注册一次
Nov 03 Python
TensorFlow平台下Python实现神经网络
Mar 10 Python
Python实现Dijkstra算法
Oct 17 Python
python numpy数组的索引和切片的操作方法
Oct 20 Python
Python并发:多线程与多进程的详解
Jan 24 Python
python实现两个dict合并与计算操作示例
Jul 01 Python
python SQLAlchemy的Mapping与Declarative详解
Jul 04 Python
基于Python实现船舶的MMSI的获取(推荐)
Oct 21 Python
python 实现图与图之间的间距调整subplots_adjust
May 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
Dedecms常用函数解析
2008/02/01 PHP
PHP+MySQL删除操作实例
2015/01/21 PHP
在textarea文本域中显示HTML代码的方法
2007/03/06 Javascript
DD_belatedPNG,IE6下PNG透明解决方案(国外)
2010/12/06 Javascript
Jquery ajaxStart()与ajaxStop()方法(实例讲解)
2013/12/18 Javascript
js实现简单的购物车有图有代码
2014/05/26 Javascript
Javascript中call与apply的学习笔记
2014/09/22 Javascript
探讨js字符串数组拼接的性能问题
2014/10/11 Javascript
网页中表单按回车就自动提交的问题的解决方案
2014/11/03 Javascript
JavaScript实现仿新浪微博大厅和腾讯微博首页滚动特效源码
2015/09/15 Javascript
JS控制伪元素的方法汇总
2016/04/06 Javascript
jquery 实现回车登录详解及实例代码
2016/10/23 Javascript
关于jQuery库冲突的完美解决办法
2017/05/20 jQuery
vue router仿天猫底部导航栏功能
2017/10/18 Javascript
利用js将ajax获取到的后台数据动态加载至网页中的方法
2018/08/08 Javascript
详解vue使用$http服务端收不到参数
2019/04/19 Javascript
vue学习笔记之slot插槽用法实例分析
2020/02/29 Javascript
JavaScript前后端JSON使用方法教程
2020/11/23 Javascript
浅析VUE防抖与节流
2020/11/24 Vue.js
[38:51]2014 DOTA2国际邀请赛中国区预选赛 Orenda VS LGD-CDEC
2014/05/22 DOTA
[05:49]2014DOTA2TI4正赛第二日综述 昔日冠军纷纷落马 VG LGD占尽先机
2014/07/20 DOTA
[58:42]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第一局
2016/02/27 DOTA
python opencv3实现人脸识别(windows)
2018/05/25 Python
python中单例常用的几种实现方法总结
2018/10/13 Python
springboot配置文件抽离 git管理统 配置中心详解
2019/09/02 Python
python super用法及原理详解
2020/01/20 Python
如何通过python实现IOU计算代码实例
2020/11/02 Python
Python下载的11种姿势(小结)
2020/11/18 Python
Java里面StringBuilder和StringBuffer有什么区别
2016/06/06 面试题
大课间体育活动方案
2014/03/12 职场文书
汽车技术服务与贸易专业求职信
2014/07/20 职场文书
公司仓管员岗位职责
2015/04/01 职场文书
小学六一儿童节活动总结
2015/05/05 职场文书
谁动了我的奶酪读书笔记
2015/06/30 职场文书
2019年度行政文员工作计划范本!
2019/07/04 职场文书
SQL中的连接查询详解
2022/06/21 SQL Server