背景

前段時間寫了個自動打卡的腳本,但是腳本不夠完善,我需要知道,打卡到底成沒成功,因此,我想到了用Python執(zhí)行完代碼之后,再執(zhí)行一段發(fā)送郵件的代碼。需求開始明確了,就開始分析和寫代碼實現(xiàn)吧。

分析

SMTP(Simple Mail Transfer Protocol),即簡單郵件傳輸協(xié)議,它是一組用于由源地址到目的地址傳送郵件的規(guī)則,由它來控制信件的中轉(zhuǎn)方式。
python的smtplib提供了一種很方便的途徑發(fā)送電子郵件。它對smtp協(xié)議進行了簡單的封裝。

代碼實現(xiàn)

import smtplib
from email.mime.text import MIMEText  
# 引入smtplib和MIMEText
from time import sleep

def sentemail():
    host = 'smtp.163.com'  
    # 設(shè)置發(fā)件服務(wù)器地址
    port = 465  
    # 設(shè)置發(fā)件服務(wù)器端口號。注意,這里有SSL和非SSL兩種形式,現(xiàn)在一般是SSL方式
    sender = 'a419914150@163.com'  
    # 設(shè)置發(fā)件郵箱,一定要自己注冊的郵箱
    pwd = 'SGJEKFBFK322'  
    # 設(shè)置發(fā)件郵箱的授權(quán)碼密碼,根據(jù)163郵箱提示,登錄第三方郵件客戶端需要授權(quán)碼
    receiver = '419914150@qq.com' 
    # 設(shè)置郵件接收人,可以是QQ郵箱
    body = '<h1>你已成功打卡</h1><p>zhongfs</p>' 
    # 設(shè)置郵件正文,這里是支持HTML的
    msg = MIMEText(body, 'html') 
    # 設(shè)置正文為符合郵件格式的HTML內(nèi)容
    msg['subject'] = '打卡通知' 
    # 設(shè)置郵件標(biāo)題
    msg['from'] = sender  
    # 設(shè)置發(fā)送人
    msg['to'] = receiver  
    # 設(shè)置接收人
    try:
	    s = smtplib.SMTP_SSL(host, port)  
        # 注意!如果是使用SSL端口,這里就要改為SMTP_SSL
	    s.login(sender, pwd)  
        # 登陸郵箱
	    s.sendmail(sender, receiver, msg.as_string())
        # 發(fā)送郵件!
	    print ('Done.sent email success')
    except smtplib.SMTPException:
	    print ('Error.sent email fail')
        
if __name__ == '__main__':
    sentemail()

執(zhí)行情況

程序運行截圖:

收到郵件截圖:

總結(jié)

本文簡單介紹了如何利用python通過163郵箱發(fā)送郵件,并附上了代碼。由于比較簡單,不再過多闡述。已上傳github代碼,鏈接如下:

https://github.com/rootzhongfengshan/python_practical/blob/master/SentMail/SentMail.py