使用Python发送各种形式的邮件的方法汇总

 更新时间:2015年11月09日 16:22:43   投稿:goldensun  
这篇文章主要介绍了使用Python发送各种形式的邮件的方法汇总,包括HTML形式的或者带图片以及带附件的邮件等等,需要的朋友可以参考下

我们平时需要使用 Python 发送各类邮件,这个需求怎么来实现?答案其实很简单,smtplib 和 email 库可以帮忙实现这个需求。smtplib 和 email 的组合可以用来发送各类邮件:普通文本,HTML 形式,带附件,群发邮件,带图片的邮件等等。我们这里将会分几节把发送邮件功能解释完成。
smtplib 是 Python 用来发送邮件的模块,email 是用来处理邮件消息。

发送 HTML 形式的邮件
发送 HTML 形式的邮件,需要 email.mime.text 中的 MIMEText 的 _subtype 设置为 html,并且 _text 的内容应该为 HTML 形式。

import smtplib
from email.mime.text import MIMEText

sender = '***'
receiver = '***'
subject = 'python email test'
smtpserver = 'smtp.163.com'
username = '***'
password = '***'

msg = MIMEText(u'''<pre>
<h1>你好</h1>
</pre>''','html','utf-8')

msg['Subject'] = subject

smtp = smtplib.SMTP()
smtp.connect(smtpserver)
smtp.login(username, password)
smtp.sendmail(sender, receiver, msg.as_string())
smtp.quit()

注意:这里的代码并没有把异常处理加入,需要读者自己处理异常。

发送带图片的邮件
发送带图片的邮件是利用 email.mime.multipart 的 MIMEMultipart 以及 email.mime.image 的 MIMEImage:

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

sender = '***'
receiver = '***'
subject = 'python email test'
smtpserver = 'smtp.163.com'
username = '***'
password = '***'

msgRoot = MIMEMultipart('related')
msgRoot['Subject'] = 'test message'

msgText = MIMEText(
  '''<b> Some <i> HTML </i> text </b > and an image.<img alt="" src="cid:image1"/>good!''', 'html', 'utf-8')
msgRoot.attach(msgText)

fp = open('/Users/1.jpg', 'rb')
msgImage = MIMEImage(fp.read())
fp.close()

msgImage.add_header('Content-ID', '<image1>')
msgRoot.attach(msgImage)

smtp = smtplib.SMTP()
smtp.connect(smtpserver)
smtp.login(username, password)
smtp.sendmail(sender, receiver, msgRoot.as_string())
smtp.quit()

发送带附件的邮件
发送带附件的邮件是利用 email.mime.multipart 的 MIMEMultipart 以及 email.mime.image 的 MIMEImage,重点是构造邮件头信息:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

sender = '***'
receiver = '***'
subject = 'python email test'
smtpserver = 'smtp.163.com'
username = '***'
password = '***'

msgRoot = MIMEMultipart('mixed')
msgRoot['Subject'] = 'test message'

# 构造附件
att = MIMEText(open('/Users/1.jpg', 'rb').read(), 'base64', 'utf-8')
att["Content-Type"] = 'application/octet-stream'
att["Content-Disposition"] = 'attachment; filename="1.jpg"'
msgRoot.attach(att)

smtp = smtplib.SMTP()
smtp.connect(smtpserver)
smtp.login(username, password)
smtp.sendmail(sender, receiver, msgRoot.as_string())
smtp.quit()

相关文章

  • python去除删除数据中\u0000\u0001等unicode字符串的代码

    python去除删除数据中\u0000\u0001等unicode字符串的代码

    这篇文章主要介绍了python去除删除数据中\u0000\u0001等unicode字符串的代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Python+ChatGPT实现5分钟快速上手编程

    Python+ChatGPT实现5分钟快速上手编程

    最近一段时间chatGPT火爆出圈!无论是在互联网行业,还是其他各行业都赚足了话题。俗话说:“外行看笑话,内行看门道”,今天从chatGPT个人体验感受以及如何用的角度来分享一下
    2023-02-02
  • 基于Django drf框架序列化视图

    基于Django drf框架序列化视图

    这篇文章主要为大家介绍了基于Django drf框架序列化视图,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • 详解Selenium+PhantomJS+python简单实现爬虫的功能

    详解Selenium+PhantomJS+python简单实现爬虫的功能

    这篇文章主要介绍了详解Selenium+PhantomJS+python简单实现爬虫的功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • 在Django的上下文中设置变量的方法

    在Django的上下文中设置变量的方法

    这篇文章主要介绍了在Django的上下文中设置变量的方法,Django是重多Python高人气框架中最为著名的一个,需要的朋友可以参考下
    2015-07-07
  • Python实现GUI图片浏览的小程序

    Python实现GUI图片浏览的小程序

    这篇文章主要介绍了Python实现GUI图片浏览程序,程序的实现需要pillow库,pillow是 Python 的第三方图像处理库,需要安装才能实用,文中通过代码示例给大家介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • django 实现简单的插入视频

    django 实现简单的插入视频

    这篇文章主要介绍了django 实现简单的插入视频,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • 学生信息管理系统python版

    学生信息管理系统python版

    这篇文章主要为大家详细介绍了学生信息管理系统python版,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • Python traceback模块获取异常信息的使用

    Python traceback模块获取异常信息的使用

    Python的traceback模块提供了多种方法来获取和展示异常的堆栈信息,本文主要介绍了Python traceback模块获取异常信息的使用,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • pyqt5利用pyqtDesigner实现登录界面

    pyqt5利用pyqtDesigner实现登录界面

    这篇文章主要为大家详细介绍了pyqt5利用pyqtDesigner实现登录界面,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03

最新评论