利用python發送郵件

在搜索python教程的時候,碰巧遇到了“利用python發送電子郵件”的教程,覺得很實用也比較有意思,所以就花了點時間學習發送郵件的腳本是怎樣實現的。我主要是利用SMTP(簡單郵件傳輸協議)來實現郵件的發送。

首先要安裝SMTPemail的庫

運行cmd,輸入:

pip install secure-smtplib

pip install email

這樣我們所需的庫就安裝好了。

網上大部分的教程,說什么好呢,有些時候我真的很奇怪,他們在寫完教程以后會不會再按著自己的教程運行一遍,因為我一步一步按著教程做下來,還是會提示我各種錯誤,猝不及防。不過這個教程遇到的錯誤,最終還是解決了,因為解決辦法是在手機上搜到的,那份教程找不到,網站就貼不上來了。進入正題,貼代碼:

#coding: utf-8

import smtplib
from email.mime.text import MIMEText
from email.header import Header

sender = raw_input("Please enter a sender email address:\n> ") #“我”的郵箱
password = raw_input("keywords:\n> ") #密碼
receiver = raw_input("Please enter a receiver address:\n> ") #接收者郵箱
subject = raw_input("Title:\n> ") #郵件標題
words = raw_input("Text:\n> ") #郵件正文
smtpserver = 'smtp.163.com'

msg = MIMEText(words, 'plain', 'utf-8')#中文需參數‘utf-8',單字節字符不需要
msg['Subject'] = Header(subject, 'utf-8') #郵件標題
msg['from'] = sender #發信人地址
msg['to'] = receiver #收信人地址

smtp = smtplib.SMTP()
smtp.connect('smtp.163.com')
smtp.login(sender, password)
smtp.sendmail(sender, receiver, msg.as_string()) #這行代碼解決的下方554的錯誤
smtp.quit()
print "郵件發送成功!"

這個腳本比較簡單,但是可以發送成功,網上有些教程運行會提示錯誤:

554 DT:SPM 發送的郵件內容包含了未被許可的信息,或被系統識別為垃圾郵件。請檢查是否有用戶發送病毒或者垃圾郵件;

在上邊代碼標注了,我找到的解決辦法主要和那行代碼有關系,為什么我還沒有弄明白。這段代碼還有一個缺點是郵件的標題只能為英文,如果換成中文的話會提示編碼錯誤:

UnicodeDecodeError: ‘utf8’ codec can’t decode byte 0xb1 in position 0: invalid start byte

需要注意的是,如果你用的是163郵箱,需要設置客戶端授權密碼。

郵箱客戶端授權密碼

在“設置”里找到“客戶端授權密碼”,開啟并輸入你要設置的密碼,在python代碼中用到的密碼就是你設置的“客戶端授權密碼”。

測試效果:

郵件測試
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容