Python 中的 SMTP 協議客戶端 (smtplib)


Python 的標準庫包含 'smtplib' 模組,該模組定義了一個 SMTP 客戶端會話物件,可用於透過 Python 程式傳送郵件。

郵件伺服器是一種處理和傳遞網際網路電子郵件的應用程式。外發郵件伺服器實現 SMTP(簡單郵件傳輸協議)伺服器,這是電子郵件傳輸的網際網路標準。

收件郵件伺服器主要有兩種:POP3(郵局協議)和 IMAP(網際網路郵件訪問協議)。

smptlib.SMTP() 函式

此函式返回 SMTP 類的物件。它封裝並管理與 SMTP 或 ESMTP 伺服器的連線。此函式的簽名中定義了以下引數:

主機 (host)
一個字串,表示要連線到的遠端主機的名稱。
埠 (port)
指定要連線到的埠的數字。預設情況下,使用 smtplib.SMTP_PORT。
本地主機名 (local_hostname)
在 HELO/EHLO 命令中用作本地主機的完全限定域名 (FQDN)。
源地址 (source_address)
一個 2 元組 (host, port) 物件,套接字將繫結到該物件。

它具有以下支援 SMTP 操作的方法:

connect() -

此方法建立與給定埠上的主機的連線。

login() -

此函式採用使用者名稱和密碼引數登入到 SMTP 伺服器。

quit() -

此函式終止 SMTP 會話。

data() -

此函式的“message”引數將傳送到伺服器。

**docmd() -**

此函式傳送命令並返回其響應程式碼。

**ehlo() -**

此函式識別伺服器。

starttls() -

此函式啟動 TLS 模式。

**getreply() -**

此函式以響應程式碼的形式接收來自伺服器的回覆。

**putcmd() -**

此函式向伺服器傳送命令。

send_message() -

此函式將訊息轉換為位元組字串並將其傳遞給傳送郵件。

**sendmail() -**

此命令執行整個郵件事務。

引數如下:

from_addr
傳送此郵件的地址。
to_addrs
要傳送此郵件的地址列表。
msg
要傳送的訊息。

下面的程式碼使用 Gmail 的 smtp 伺服器傳送電子郵件。SMTP 物件使用 Gmail 的 smtp 伺服器,埠為 527。ehlo() 命令識別伺服器。我們還將傳輸層安全啟用到外發郵件訊息。

接下來,透過將憑據作為引數傳遞給它來呼叫 login() 命令。最後,透過附加規定的格式的標題來組裝郵件訊息,並使用 sendmail() 方法傳送。之後關閉 SMTP 物件。

import smtplib
content="HelloWorld"
mail=smtplib.SMTP('smtp.gmail.com',587)
mail.ehlo()
mail.starttls()
sender='pythonanytime@gmail.com'
recipient='mlathkar@gmail.com'
mail.login('pythonanytime@gmail.com','m15v5l61')
header='To:'+receipient+'\n'+'From:'\
+sender+'\n'+'subject:testmail\n'
content=header+content
mail.sendmail(sender,recipient, content)
mail.close()


在執行上述指令碼之前,請確保傳送者的 Gmail 帳戶已獲得“安全性較低的應用”的訪問許可權。

https://myaccount.google.com/lesssecureapps

將顯示的切換按鈕設定為“開”。

執行上述設定後執行上述指令碼。該訊息應傳送到收件人的收件箱。

更新於:2020年6月29日

瀏覽量:1000+

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.