Python网络编程 SMTP

Python网络编程 SMTP

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

Python提供了 smtplib 模块,它定义了一个SMTP客户端会话对象,可以用来向任何有SMTP或ESMTP监听器的互联网机器发送邮件。

一个SMTP对象有一个叫做 sendmail 的实例方法,它通常用来完成邮寄邮件的工作。它需要三个参数

  • 发件人 – 一个包含发件人地址的字符串。

  • 收件人 - 一个字符串的列表,每个收件人一个。

  • 信息 – 一个字符串,按照各种RFC的规定格式化的信息。

例子

下面是一个使用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"
Python

在这里,你在信息中放置了一个基本的电子邮件,使用了三重引号,并注意正确的标题格式。一封电子邮件需要一个 发件人收件人主题 头,用一个空行与电子邮件的正文分开。

为了发送邮件,你使用 smtpObj 连接到本地机器上的SMTP服务器。然后使用 sendmail 方法,将邮件、发件人地址和目的地地址作为参数(即使发件人和收件人地址在邮件本身中,但这些地址并不总是用来路由邮件)。

如果你在本地机器上没有运行SMTP服务器,你可以使用 smtplib 客户端与远程SMTP服务器通信。除非你使用的是网络邮件服务(如gmail或Yahoo!Mail),否则你的电子邮件提供商必须已经向你提供了外发邮件服务器的详细信息,你可以向他们提供,如下所示

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

使用 Python 发送 HTML 电子邮件

当你使用Python发送一个文本信息时,那么所有的内容都被当作简单的文本。即使你在文本信息中包含了HTML标签,它也被显示为简单的文本,HTML标签不会按照HTML语法进行格式化。然而,Python提供了一个选项,可以将HTML消息作为实际的HTML消息发送。

在发送电子邮件时,你可以指定一个Mime版本、内容类型和字符集来发送HTML电子邮件。

例子

下面是一个将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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册