python 发送邮件的四种方法汇总

 更新时间:2020年12月02日 11:46:44   作者:小公瑾  
这篇文章主要介绍了python 发送邮件的四种方法,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下

  这里针对smtplib做了一系列封装,可以完成以下四种场景:

  • 发送纯文本的邮件
  • 发送html页面的邮件
  • 发送带附件文件的邮件
  • 发送能展示图片的邮件

  以上四种场景,已经做好了二次封装,经测试OK,使用时直接传入对应参数即可,直接上代码

import smtplib
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart


class SendEMail(object):
  """封装发送邮件类"""

  def __init__(self, host, port, msg_from, pwd):

    self.msg_from = msg_from
    self.password = pwd

    # 邮箱服务器地址和端口
    self.smtp_s = smtplib.SMTP_SSL(host=host, port=port)

    # 发送方邮箱账号和授权码
    self.smtp_s.login(user=msg_from, password=pwd)

  def send_text(self, to_user, content, subject, content_type='plain'):
    """
    发送文本邮件
    :param to_user: 对方邮箱
    :param content: 邮件正文
    :param subject: 邮件主题
    :param content_type: 内容格式:'plain' or 'html'
    :return:
    """
    msg = MIMEText(content, _subtype=content_type, _charset="utf8")

    msg["From"] = self.msg_from
    msg["To"] = to_user
    msg["subject"] = subject

    self.smtp_s.send_message(msg, from_addr=self.msg_from, to_addrs=to_user)

  def send_file(self, to_user, content, subject, reports_path, filename, content_type='plain'):
    """
    发送带文件的邮件
    :param to_user: 对方邮箱
    :param content: 邮件正文
    :param subject: 邮件主题
    :param reports_path: 文件路径
    :param filename: 邮件中显示的文件名称
    :param content_type: 内容格式
    """

    file_content = open(reports_path, "rb").read()

    msg = MIMEMultipart()

    text_msg = MIMEText(content, _subtype=content_type, _charset="utf8")
    msg.attach(text_msg)

    file_msg = MIMEApplication(file_content)
    file_msg.add_header('content-disposition', 'attachment', filename=filename)
    msg.attach(file_msg)

    msg["From"] = self.msg_from
    msg["To"] = to_user
    msg["subject"] = subject

    self.smtp_s.send_message(msg, from_addr=self.msg_from, to_addrs=to_user)

  def send_img(self, to_user, subject, content, filename, content_type='html'):
    '''
    发送带图片的邮件
    :param to_user: 对方邮箱
    :param subject: 邮件主题
    :param content: 邮件正文
    :param filename: 图片路径
    :param content_type: 内容格式
    '''
    subject = subject
    msg = MIMEMultipart('related')
    # Html正文必须包含<img src="cid:imageid" alt="imageid" width="100%" height="100%>
    content = MIMEText(content, _subtype=content_type, _charset="utf8")
    msg.attach(content)
    msg['Subject'] = subject
    msg['From'] = self.msg_from
    msg['To'] = to_user

    with open(filename, "rb") as file:
      img_data = file.read()

    img = MIMEImage(img_data)
    img.add_header('Content-ID', 'imageid')
    msg.attach(img)

    self.smtp_s.sendmail(self.msg_from, to_user, msg.as_string())

以上就是python 发送邮件的四种方法汇总的详细内容,更多关于python 发送邮件的资料请关注脚本之家其它相关文章!

相关文章

  • 解决Keras自带数据集与预训练model下载太慢问题

    解决Keras自带数据集与预训练model下载太慢问题

    这篇文章主要介绍了解决Keras自带数据集与预训练model下载太慢问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • PyTorch中 tensor.detach() 和 tensor.data 的区别详解

    PyTorch中 tensor.detach() 和 tensor.data 的区别详解

    今天小编就为大家分享一篇PyTorch中 tensor.detach() 和 tensor.data 的区别详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • python 如何上传包到pypi

    python 如何上传包到pypi

    这篇文章主要介绍了python 如何上传包到pypi,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-12-12
  • Python统计中文词频的四种方法小结

    Python统计中文词频的四种方法小结

    统计中文词频是Python考试中常见的操作,本文我们总结了四种常见的中文词频统计方法,并列出代码,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • FastApi如何快速构建一个web项目的实现

    FastApi如何快速构建一个web项目的实现

    本文主要介绍了FastApi如何快速构建一个web项目的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Python循环语句中else的用法总结

    Python循环语句中else的用法总结

    这篇文章给大家整理了关于Python中循环语句中else的用法,包括常规的 if else 用法、if else 快捷用法、与 for 关键字一起用、与 while 关键字一起用以及与 try except 一起用的用法总结,有需要的朋友们可以参考借鉴。
    2016-09-09
  • Python实现基本线性数据结构

    Python实现基本线性数据结构

    这篇文章主要实现四种数据结构,分别是数组、堆栈、队列、链表。大家都知道可以用C语言实现这几种数据结构,其实Python也可以实现,下面跟着小编一起来学习。
    2016-08-08
  • Python抓取通过Ajax加载数据的示例

    Python抓取通过Ajax加载数据的示例

    在网页上,有一些内容是通过执行Ajax请求动态加载数据渲染出来的,本文主要介绍了使用Python抓取通过Ajax加载数据,感兴趣的可以了解一下
    2023-05-05
  • python 根据时间来生成唯一的字符串方法

    python 根据时间来生成唯一的字符串方法

    今天小编就为大家分享一篇python 根据时间来生成唯一的字符串方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • 如何利用Tensorflow2进行猫狗分类识别

    如何利用Tensorflow2进行猫狗分类识别

    图像分类是根据图像的语义信息将不同类别图像区分开来,是计算机视觉中重要的基本问题,下面这篇文章主要给大家介绍了关于如何利用Tensorflow2进行猫狗分类识别的相关资料,需要的朋友可以参考下
    2022-06-06

最新评论