亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> Python

Python - 使用 SMTP 发送电子邮件

上一页下一页

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

Python 提供 smtplib 模块,它定义了一个 SMTP 客户端会话对象,该对象可用于向任何带有 SMTP 或 ESMTP 监听器守护进程的 Internet 机器发送邮件。

这是创建一个 SMTP 对象的简单语法,稍后可用于发送电子邮件 -

import smtplib

smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )

这是参数的详细信息 -

SMTP 对象有一个名为 sendmail 的实例方法 ,这通常用于完成邮寄消息的工作。它需要三个参数 -

示例

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

#!/usr/bin/python

import smtplib

sender = '[email protected]'
receivers = ['[email protected]']

message = """From: From Person <[email protected]>
To: To Person <[email protected]>
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"

在这里,您在消息中放置了一个基本的电子邮件,使用三引号,注意正确格式化标题。电子邮件需要发件人 , , 和 主题 标题,用空行与邮件正文分开。

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

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

smtplib.SMTP('mail.your-domain.com', 25)

使用 Python 发送 HTML 电子邮件

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

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

示例

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

#!/usr/bin/python

import smtplib

message = """From: From Person <[email protected]>
To: To Person <[email protected]>
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"

以电子邮件形式发送附件

要发送包含混合内容的电子邮件,需要设置 Content-type multipart/mixed 的标头 .然后,可以在 boundaries 内指定文本和附件部分 .

边界以两个连字符开头,后跟一个唯一编号,该编号不能出现在电子邮件的消息部分中。表示电子邮件最后部分的最后边界也必须以两个连字符结尾。

附加文件应使用 pack("m") 编码 传输前进行base64编码的功能。

示例

以下是发送文件 /tmp/test.txt 的示例 作为附件。尝试一次 -

#!/usr/bin/python

import smtplib
import base64

filename = "/tmp/test.txt"

# Read a file and encode it into base64 format
fo = open(filename, "rb")
filecontent = fo.read()
encodedcontent = base64.b64encode(filecontent)  # base64

sender = '[email protected]'
reciever = '[email protected]'

marker = "AUNIQUEMARKER"

body ="""
This is a test email to send an attachement.
"""
# Define the main headers.
part1 = """From: From Person <[email protected]>
To: To Person <[email protected]>
Subject: Sending Attachement
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=%s
--%s
""" % (marker, marker)

# Define the message action
part2 = """Content-Type: text/plain
Content-Transfer-Encoding:8bit

%s
--%s
""" % (body,marker)

# Define the attachment section
part3 = """Content-Type: multipart/mixed; name=\"%s\"
Content-Transfer-Encoding:base64
Content-Disposition: attachment; filename=%s

%s
--%s--
""" %(filename, filename, encodedcontent, marker)
message = part1 + part2 + part3

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

Python

  1. Python 数据类型
  2. Python 运算符
  3. Python pass 语句
  4. Python 函数参数
  5. Python字典
  6. Python 异常处理使用 try、except 和 finally 语句
  7. TMP006 温度传感器 Python 库,使用 Raspberry pi,
  8. Python 和 Raspberry Pi 温度传感器
  9. Python 平均值:如何在 Python 中找到列表的平均值
  10. 在不使用第三个的情况下交换两个 Python 变量
  11. Java - 发送电子邮件
  12. Python - 使用 SMTP 发送电子邮件