Python基于smtplib协议实现发送邮件

 更新时间:2020年06月03日 08:29:40   作者:多测师_王sir  
这篇文章主要介绍了Python基于smtplib协议实现发送邮件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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 requests中的post请求的参数问题

    详解python requests中的post请求的参数问题

    这篇文章主要介绍了详解python requests中的post请求的参数问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Python虚拟环境virtualenv是如何使用的

    Python虚拟环境virtualenv是如何使用的

    今天给大家带来的是关于Python虚拟环境的相关知识,文章围绕着Python虚拟环境virtualenv是如何使用的展开,文中有非常详细的解释及代码示例,需要的朋友可以参考下
    2021-06-06
  • Python变量和数据类型和数据类型的转换

    Python变量和数据类型和数据类型的转换

    这篇文章主要介绍了Python变量和数据类型和数据类型的转换,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • 利用python将图片转换成excel文档格式

    利用python将图片转换成excel文档格式

    编写了一小段Python代码,将图片转为了Excel,纯属娱乐,下面这篇文章主要给大家介绍了关于利用python将图片转换成excel文档格式的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-12-12
  • Python实现获取照片拍摄日期并重命名的方法

    Python实现获取照片拍摄日期并重命名的方法

    这篇文章主要介绍了Python实现获取照片拍摄日期并重命名的方法,涉及Python针对文件属性及文件名相关操作技巧,需要的朋友可以参考下
    2017-09-09
  • 学习Python列表的基础知识汇总

    学习Python列表的基础知识汇总

    本文给大家汇总介绍了学习Python列表的一些基础知识,有了这份python列表的资料,对大家初识Python列表会非常有帮助,希望大家喜欢
    2020-03-03
  • python 3调用百度OCR API实现剪贴板文字识别

    python 3调用百度OCR API实现剪贴板文字识别

    这篇文章主要为大家详细介绍了python 3调用百度OCR API实现剪贴板文字识别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • Django添加feeds功能的示例

    Django添加feeds功能的示例

    这篇文章主要介绍了Django添加feeds功能的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • Python Map 函数的使用

    Python Map 函数的使用

    这篇文章主要介绍了Python Map 函数的使用,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-08-08
  • Python创建相同值数组/列表的两种方法

    Python创建相同值数组/列表的两种方法

    众所周知数组是一种用来在计算机中存储连续的相同类型数值的数据结构,这篇文章主要给大家介绍了关于Python创建相同值数组/列表的两种方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-12-12

最新评论