前段時間寫了個自動打卡的腳本,但是腳本不夠完善,我需要知道,打卡到底成沒成功,因此,我想到了用Python執行完代碼之後,再執行一段發送郵件的代碼。需求開始明確了,就開始分析和寫代碼實現吧。 ...
背景
前段時間寫了個自動打卡的腳本,但是腳本不夠完善,我需要知道,打卡到底成沒成功,因此,我想到了用Python執行完代碼之後,再執行一段發送郵件的代碼。需求開始明確了,就開始分析和寫代碼實現吧。
分析
SMTP(Simple Mail Transfer Protocol),即簡單郵件傳輸協議,它是一組用於由源地址到目的地址傳送郵件的規則,由它來控制信件的中轉方式。
python的smtplib提供了一種很方便的途徑發送電子郵件。它對smtp協議進行了簡單的封裝。
代碼實現
import smtplib
from email.mime.text import MIMEText
# 引入smtplib和MIMEText
from time import sleep
def sentemail():
host = 'smtp.163.com'
# 設置發件伺服器地址
port = 465
# 設置發件伺服器埠號。註意,這裡有SSL和非SSL兩種形式,現在一般是SSL方式
sender = '[email protected]'
# 設置發件郵箱,一定要自己註冊的郵箱
pwd = 'SGJEKFBFK322'
# 設置發件郵箱的授權碼密碼,根據163郵箱提示,登錄第三方郵件客戶端需要授權碼
receiver = '[email protected]'
# 設置郵件接收人,可以是QQ郵箱
body = '<h1>你已成功打卡</h1><p>zhongfs</p>'
# 設置郵件正文,這裡是支持HTML的
msg = MIMEText(body, 'html')
# 設置正文為符合郵件格式的HTML內容
msg['subject'] = '打卡通知'
# 設置郵件標題
msg['from'] = sender
# 設置發送人
msg['to'] = receiver
# 設置接收人
try:
s = smtplib.SMTP_SSL(host, port)
# 註意!如果是使用SSL埠,這裡就要改為SMTP_SSL
s.login(sender, pwd)
# 登陸郵箱
s.sendmail(sender, receiver, msg.as_string())
# 發送郵件!
print ('Done.sent email success')
except smtplib.SMTPException:
print ('Error.sent email fail')
if __name__ == '__main__':
sentemail()
執行情況
程式運行截圖:
收到郵件截圖:
總結
本文簡單介紹瞭如何利用python通過163郵箱發送郵件,並附上了代碼。由於比較簡單,不再過多闡述。已上傳github代碼,鏈接如下:
https://github.com/rootzhongfengshan/python_practical/blob/master/SentMail/SentMail.py