SMTP是發送郵件的協議,Python內置對SMTP的支持,可以發送純文本郵件、HTML郵件以及帶附件的郵件。
Python對SMTP支持有smtplib和email兩個模塊,email負責構造郵件,smtplib負責發送郵件。
from email.mime.text import MIMEText msg = MIMEText('hello, send by Python...', 'plain', 'utf-8') # 輸入Email地址和口令: from_addr = input('From: ') password = input('Password: ') # 輸入收件人地址: to_addr = input('To: ') # 輸入SMTP服務器地址: smtp_server = input('SMTP server: ') import smtplib server = smtplib.SMTP(smtp_server, 25) # SMTP協議默認端口是25 server.set_debuglevel(1) server.login(from_addr, password) server.sendmail(from_addr, [to_addr], msg.as_string()) server.quit()
在使用過程中,如果是在安裝有郵箱客戶端的情況下 ,在鍵入源郵箱地址和密碼以及目的郵箱地址,很輕鬆完成代碼的郵件發送測試(我使用的是騰訊企業郵箱客戶端),但是使用qq郵箱同樣是鍵入以上信息,則會報告錯誤 reply: b'535 Error……;raise SMTPAuthenticationError(code, resp)等一些錯誤信息,表示的就是你的郵件沒有發送成功。
沒有發送成功,我勒個擦擦擦,沒有客戶手端這代碼就沒有用的嗎?好像不是,問題總會有解決的辦法。
發送郵件的郵箱必須在設置頁面開啓stmp服務並設置授權碼
發送郵箱的密碼不再是你註冊時的密碼,而是授權碼!!!切記!
至於如何設置,見下圖
F開頭的單詞,圖片太大了,不太會設置,就這麼着吧。具體郵箱爲甚麼有這些設置,以及這些都是什麼作用,在進入設置頁面是由鏈接跳轉的,可以查看。
我們需要開啓POP3/SMTP服務,選擇開啓之後我們會得到一個授權碼,將這個授權碼替代上面代碼部分的passwd填入即可成功發送郵件。