Python基于SMTP發(fā)送郵件的方法
在很多時候,使用 Python 發(fā)送郵件可能沒有辦法使用郵件服務(wù)器提供的 API,因為不是所有的郵件服務(wù)商都會提供 API 供客戶使用的。
通常使用郵件 API 的郵件發(fā)送服務(wù)都需要額外的收費。
因此我們再郵件測試發(fā)送的時候,可能需要的是 SMTP 郵件發(fā)送服務(wù),通常這個服務(wù)是所有郵件服務(wù)商都會提供的。
要使用 SMTP 郵件發(fā)送服務(wù),你需要有下面的信息才可以完成和測試:
SMTP 郵件服務(wù)器的地址,端口,登錄用戶名和登錄用戶密碼 發(fā)送和接收郵件的地址 郵件的主題和正文看起來是不是有點復(fù)雜,實際上,Python 提供了一個sendmail 的方法,這個方法在 smtplib 庫中。
簡單來說按照下面的步驟來做就可以了。
構(gòu)建消息對象在 Python 中有一個庫為 MIMEMultipart,我們可以使用這個來構(gòu)建消息對象。
要做的事情也比較簡單,在定義 MIMEMultipart 對象后,你需要在這個對象中設(shè)置是誰發(fā)送的,發(fā)送給誰,主題是什么。
然后再在這個對象中插入正文,你可以插入 HTML 也可以插入純文本。
為了讓郵件比較美觀,通常我們都會插入 HTML 的文本,很多時候為了插入更多的數(shù)據(jù),我們還可能會用到模板。
發(fā)送郵件在定義完成消息對象后,我們就可以發(fā)送郵件了。
在發(fā)送郵件之前,我們需要初始化 SMTP 對象,通常使用的是 smtplib.SMTP(smtpserver) 方法。
在這個方法中,我們會定義發(fā)送郵件服務(wù)器的地址和端口。
隨后我們可能會調(diào)用一個 starttls 方法,這個方法是希望發(fā)送郵件服務(wù)器使用的是 TLS 模式。
隨著技術(shù)的進步,和安全的考慮,很多郵件發(fā)送服務(wù)器都要求使用 TLS 模式來進行發(fā)送。
然后使用 server.login(email_user, email_passwd) 方法來登錄服務(wù)器。
在上面的步驟完成后,我們就等于完成了你的 Python 代碼和郵件服務(wù)器的通信了,你的代碼在這個時候會拿到服務(wù)器的對象了,并且完成了對象的初始化了。
在這一步完成后就可以調(diào)用 sendmail 函數(shù)發(fā)送郵件。
當郵件發(fā)送完成后,不要忘記關(guān)閉郵件服務(wù)器的連接。
# Connect to the SMTP server server = smtplib.SMTP(smtpserver) server.starttls() server.login(email_user, email_passwd) sending_response = server.sendmail(from_addr, to_addr, message.as_string()) print(sending_response) server.quit()
針對上面的發(fā)送服務(wù),請參考下上面提供的偽代碼。
完整的測試代碼請參考 GitHub 上面的:python-tutorials/SendMailSMTP.py at master · cwiki-us-docs/python-tutorials · GitHub
要點Python 發(fā)送郵件的服務(wù)還是比較簡單的。
因為郵件發(fā)送服務(wù)都需要和第三方的郵件服務(wù)器進行通信,在這個通信的過程中,最重要的步驟就是先要獲得郵件服務(wù)器的鏈接。
通常這個鏈接因為有防火墻,發(fā)送用戶名限制,密碼要求等等可能會導(dǎo)致連接獲得失敗而沒有辦法拿到連接服務(wù)器的對象。
針對遇到的情況具體問題具體分析就可以了。
遵循的原則步驟就是:
構(gòu)建消息 獲得服務(wù)器連接 發(fā)送郵件 關(guān)閉服務(wù)器連接需要注意的是不要忘記關(guān)閉服務(wù)器連接。
以上就是Python基于SMTP 發(fā)送郵件的方法的詳細內(nèi)容,更多關(guān)于Python SMTP 發(fā)送郵件的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
