小编给大家分享一下使用python发邮件的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
简单邮件传输协议(SMTP)是一种协议,用于在邮件服务器之间发送电子邮件和路由电子邮件。
python提供smtplib模块,该模块定义了一个SMTP客户端会话对象,可用于使用SMTP或ESMTP侦听器守护程序向任何互联网机器发送邮件。
这是一个简单的语法,用来创建一个SMTP对象,稍后将演示如何用它来发送电子邮件:
import smtplib smtpObj =, smtplib.SMTP (, [host [, port [, local_hostname]]],)
这里是上面语法的参数细节:
主机-这是运行SMTP服务器的主机。可以指定主机的IP地址或类似yiibai.com的域名。这是一个可选参数。
港口——如果提供主机参数,则需要指定SMTP服务器正在侦听的端口。通常这个端口默认值是:25。
local_hostname——如果SMTP服务器在本地计算机上运行,那么可以只指定localhost选项。
SMTP对象有一个sendmail的实例方法,该方法通常用于执行邮件发送的工作。它需要三个参数:
发送者,具有发件人地址的字符串。
接收器——字符串列的表,每个收件人一个。
消息——作为格式如在各种RFC中指定的字符串。
1。使用Python发送纯文本电子邮件
示例
以下是使用Python脚本发送一封电子邮件的简单方法:
# !/usr/bin/python3import smtplib 时间=sender & # 39; from@fromdomain.com& # 39; receivers =, (& # 39; to@todomain.com& # 39;) 时间=message “““:,得到Person & lt; from@fromdomain.com> :,用Person & lt; to@todomain.com> 主题:SMTP e-mail 测试 却,能够is a  test e-mail 消息。 “““试一试: ,,smtpObj =, smtplib.SMTP (& # 39; localhost # 39;) ,,smtpObj.sendmail(发送方,接收器,消息),,,,,,,,, ,,print “Successfully sent email" except SMTPException:,,, print “错误:,unable 用send email"
在这里,已经发送了一封基本的电子邮件,使用三重引号,请注意正确格式化标题。一封电子邮件需要一个,要和一个主题标题,与电子邮件的正文与空白行分开。
要发送邮件,使用smtpObj连接到本地机器上的SMTP服务器。然后使用sendmail方法以及消息,从地址和目标地址作为参数(即使来自和地址在电子邮件本身内,这些并不总是用于路由邮件)。
如果没有在本地计算机上运行SMTP服务器,则可以使用smtplib客户端与远程SMTP服务器进行通信。除非您使用网络邮件服务(如gmail或Yahoo !邮件),否则您的电子邮件提供商必须向您提供可以提供的邮件服务器详细信息。以腾讯QQ邮箱为例,具体如下:
mail =, smtplib.SMTP (& # 39; smtp.qq.com& # 39;,, 587), #,端口465年或587年
2。使用Python发送HTML电子邮件
当使用Python发送邮件信息时,所有内容都被视为简单文本。即使在短信中包含HTML标签,它也将显示为简单的文本,HTML标签将不会根据HTML语法进行格式化。但是,Python提供了将HTML消息作为HTML消息发送的选项。
发送电子邮件时,可以指定一个Mime版本,内容类型和发送HTML电子邮件的字符集。
以下是将HTML内容作为电子邮件发送的示例:
# !/usr/bin/python3import smtplib 时间=message “““:,得到Person & lt; from@fromdomain.com> :,用Person & lt; to@todomain.com> MIME-Version: 1.0 内容类型:text/html 主题:SMTP HTML e-mail 测试 却,能够is an  e-mail message 用be sent 拷贝HTML 格式 & lt; b>却;能够is HTML 消息。你们;/b> & lt; h2>却;能够is 标题。;/h2> “““试一试: ,,smtpObj =, smtplib.SMTP (& # 39; localhost # 39;) ,,smtpObj.sendmail(发送方,接收器,消息),,,,,,,,, ,,print “Successfully sent email" except SMTPException:,,, ,,print “错误:,unable 用send email"
3。发送附件作为电子邮件
要发送具有混合内容的电子邮件,需要将内容类型标题设置为多部分/混合。然后,可以在边界内指定文本和附件部分。
一个边界以两个连字符开始,后跟一个唯一的编的号,不能出现在电子邮件的消息部分。表示电子邮件最终部分的最后一个边界也必须以两个连字符结尾。