Python SMTP

簡單郵件傳輸協議(SMTP)是一種協議,用於處理在電子郵件伺服器之間發送電子郵件和路由電子郵件。
Python提供了smtplib模組,該模組定義了一個SMTP客戶端會話對象,該對象可用於將郵件發送到具有SMTP或ESMTP偵聽器守護程式的任何Internet電腦。

SMTP對象具有一個稱為sendmail的實例方法,該方法通常用於完成郵件的發送工作。它需要三個參數-

  • sender- 具有發件人地址的字串。
  • receivers- 字串列表,每個接收者一個。
  • message- 以各種RFC中指定的格式格式化為字串的消息。

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"

在這裏,已經在郵件中放置了一個基本電子郵件,使用三重引號,請注意正確設置標題的格式。電子郵件需要一個“發件人”,“收件人”和“主題”標頭,並以空白行與電子郵件正文分開。

要發送郵件,需要使用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 <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 POP3