Python SMTP发送电子邮件的完整指南
本文详细介绍如何使用Python的smtplib模块通过SMTP协议发送电子邮件。内容涵盖基础文本邮件的发送步骤、关键参数说明,以及如何配置MIME版本和内容类型来发送包含HTML标签的富文本邮件。提供完整的代码示例,帮助开发者快速实现邮件自动化功能。
SMTP协议与Python smtplib模块简介
简单邮件传输协议(SMTP)是用于在电子邮件服务器之间传输和路由邮件的标准协议。Python内置了smtplib模块,该模块提供了一个SMTP客户端会话对象,允许开发者将邮件发送至任何运行SMTP或ESMTP监听服务的互联网计算机。
- sender:发件人的邮箱地址,类型为字符串。
- receivers:接收者邮箱地址列表,每个接收者对应一个字符串元素。
- message:按照相关RFC标准格式化的邮件内容字符串。
Python发送普通邮件示例
Python SMTP发送示例
以下是一个使用Python脚本发送普通文本电子邮件的简单示例。具体代码实现如下:
#!/usr/bin/python3
import smtplib
sender = 'from@fromdomain.com'
receivers = ['to@todomain.com']
message = """From: From Person <from@fromdomain.com>
To: To Person <to@todomain.com>
Subject: SMTP e-mail test
This is a test e-mail message.
"""
try:
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender, receivers, message)
print "Successfully sent email"
except SMTPException:
print "Error: unable to send email"
在上述代码中,邮件内容使用三重引号包裹,需确保标题格式正确。一封标准的电子邮件必须包含“发件人(From)”、“收件人(To)”和“主题(Subject)”三个头部字段,并且头部与邮件正文之间必须用一个空行分隔。
为了发送邮件,程序需要使用smtpObj连接到本地计算机上运行的SMTP服务器。随后调用sendmail方法,传入邮件内容、发件人地址和目标收件人地址作为参数。需要注意的是,即使这些地址已经包含在邮件头部中,它们仍必须作为参数显式传递,因为SMTP协议通常依赖这些参数来进行路由,而不仅仅依赖邮件内部信息。
如果本地计算机未运行SMTP服务器,可以使用smtplib客户端连接至远程SMTP服务器。若不使用Webmail服务(如Gmail或Yahoo! Mail),则必须向电子邮件提供商获取外发邮件服务器的详细配置信息,例如服务器地址和端口号。
mail = smtplib.SMTP('smtp.gmail.com', 587)
Python发送HTML格式邮件
使用Python发送HTML电子邮件。当使用Python发送纯文本消息时,所有内容均被视为普通文本。即使消息中包含HTML标签,它们也会被当作普通字符显示,而不会按照HTML语法进行渲染。然而,Python提供了发送实际HTML格式邮件的选项。
在发送HTML电子邮件时,可以指定MIME版本、内容类型以及字符集,以确保邮件被正确解析。具体实现代码如下:
以下是将HTML内容作为电子邮件正文发送的示例:
#!/usr/bin/python3
import smtplib
message = """From: From Person <from@fromdomain.com>
To: To Person <to@todomain.com>
MIME-Version: 1.0
Content-type: text/html
Subject: SMTP HTML e-mail test
This is an e-mail message to be sent in HTML format
<b>This is HTML message.</b>
<h1>This is headline.</h1>
"""
try:
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender, receivers, message)
print "Successfully sent email"
except SMTPException:
print "Error: unable to send email"
以上即为Python SMTP发送电子邮件的完整示例。如需了解更多关于Python SMTP发送邮件的详细信息,建议关注本站发布的相关技术文章。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









