📜  Python -SMTP

📅  最后修改于: 2020-11-06 06:33:10             🧑  作者: Mango


简单邮件传输协议(SMTP)是一种协议,用于处理在服务器之间发送电子邮件和路由电子邮件。

Python提供了smtplib模块,该模块定义了一个SMTP客户端会话对象,该对象可用于将邮件发送到具有SMTP或ESMTP侦听器守护程序的任何Internet计算机。

SMTP对象具有一个称为sendmail的实例方法,通常用于完成邮件的发送工作。它需要三个参数-

  • 发件人-包含发件人地址的字符串。

  • 接收者-字符串列表,每个接收者一个。

  • 消息-以各种RFC中指定的格式格式化为字符串的消息。

这是使用Python脚本发送一封电子邮件的简单方法。尝试一次-

#!/usr/bin/python3

import smtplib

sender = 'from@fromdomain.com'
receivers = ['to@todomain.com']

message = """From: From Person 
To: To Person 
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"

在这里,您已经在邮件中放置了一个基本电子邮件,使用三重引号,请注意正确设置标题的格式。电子邮件需要一个FromToSubject标头,并以空白行与电子邮件正文分开。

要发送邮件,请使用smtpObj连接到本地计算机上的SMTP服务器。然后,将sendmail方法与消息,发件人地址和目标地址一起用作参数(即使发件人和收件人地址位于电子邮件本身之内,但它们并不总是用于路由邮件)。

如果您不在本地计算机上运行SMTP服务器,则可以使用smtplib客户端与远程SMTP服务器通信。除非您使用Webmail服务(例如gmail或Yahoo! Mail),否则您的电子邮件提供商必须已向您提供了可以提供它们的外发邮件服务器详细信息,如下所示-

mail = smtplib.SMTP('smtp.gmail.com', 587)

使用Python发送HTML电子邮件

使用Python发送文本消息时,所有内容均被视为简单文本。即使您在文本消息中包含HTML标签,它也将显示为简单文本,并且HTML标签不会根据HTML语法进行格式化。但是, Python提供了将HTML消息作为实际HTML消息发送的选项。

发送电子邮件时,您可以指定Mime版本,内容类型和字符集以发送HTML电子邮件。

以下是将HTML内容作为电子邮件发送的示例。尝试一次-

#!/usr/bin/python3

import smtplib

message = """From: From Person 
To: To Person 
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

This is HTML message.

This is headline.

""" try: smtpObj = smtplib.SMTP('localhost') smtpObj.sendmail(sender, receivers, message) print "Successfully sent email" except SMTPException: print "Error: unable to send email"