SMTP協(xié)議
首先了解SMTP(簡單郵件傳輸協(xié)議),郵件傳送代理程序使用SMTP協(xié)議來發(fā)送電郵到接收者的郵件服務(wù)器。SMTP協(xié)議只能用來發(fā)送郵件,不能用來接收郵件,而大多數(shù)的郵件發(fā)送服務(wù)器都是使用SMTP協(xié)議。SMTP協(xié)議的默認(rèn)TCP端口號是25。
發(fā)送郵件之前的配置:
上面說了是使用SMTP協(xié)議發(fā)送的郵件,所以需要先查看你的發(fā)件人郵箱是否有開啟SMTP協(xié)議,如沒有,則需要開啟,我測試使用的是163.com的郵箱作為發(fā)信人郵箱,在設(shè)置中開啟SMTP協(xié)議如下圖所示。

測試的前提是你需要開通客戶端授權(quán),開通后會讓你設(shè)置密碼,那個密碼要記好,下面的passwd接收的是授權(quán)密碼而不是郵箱密碼!否則會出現(xiàn)下圖所示的錯誤提示:

小栗子:
import smtplib from email.header import Header from email.mime.text import MIMEText # 第三方 SMTP 服務(wù) mail_host = "smtp.163.com" # SMTP服務(wù)器 mail_user = "***" # 用戶名 mail_pass = "***" # 授權(quán)密碼,非登錄密碼 sender = ***@163.com' # 發(fā)件人郵箱(最好寫全, 不然會失敗) receivers = [***@qq.com'] # 接收郵件,可設(shè)置為你的QQ郵箱或者其他郵箱 content = '我用Python' title = '人生苦短' # 郵件主題 def sendEmail(): message = MIMEText(content, 'plain', 'utf-8') # 內(nèi)容, 格式, 編碼 message['From'] = "{}".format(sender) message['To'] = ",".join(receivers) message['Subject'] = title try: smtpObj = smtplib.SMTP_SSL(mail_host, 465) # 啟用SSL發(fā)信, 端口一般是465 smtpObj.login(mail_user, mail_pass) # 登錄驗證 smtpObj.sendmail(sender, receivers, message.as_string()) # 發(fā)送 print("mail has been send successfully.") except smtplib.SMTPException as e: print(e) def send_email2(SMTP_host, from_account, from_passwd, to_account, subject, content): email_client = smtplib.SMTP(SMTP_host) email_client.login(from_account, from_passwd) # create msg msg = MIMEText(content, 'plain', 'utf-8') msg['Subject'] = Header(subject, 'utf-8') # subject msg['From'] = from_account msg['To'] = to_account email_client.sendmail(from_account, to_account, msg.as_string()) email_client.quit() if __name__ == '__main__': sendEmail() # receiver = '***' # send_email2(mail_host, mail_user, mail_pass, receiver, title, content) 如果測試出現(xiàn)報錯,請看網(wǎng)易郵箱給出的狀態(tài)碼及含義。
菜鳥教程也有詳細(xì)教程。
本文有參考孫華強(qiáng)的博客,十分感謝。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林站長站。
新聞熱點
疑難解答
圖片精選