1. 程式人生 > >Python示例功能之郵件傳送

Python示例功能之郵件傳送

        定時郵件傳送或告警郵件實時傳送是工作中常用的功能之一,該功能需要呼叫傳送郵件模組,如下為親測可用的Python編寫的郵件傳送程式碼,該程式碼使用qq郵箱可正常傳送郵件,使用163郵箱時提示554錯誤碼郵件無法正常發出。

        實現郵件傳送需要兩個步驟,第一步為獲取郵箱的使用者名稱密碼,在使用程式碼傳送郵件時,該密碼不是使用者密碼,而是授權碼,如下演示瞭如何獲取授權碼以及郵件傳送程式碼。

獲取郵件授權碼

         在qq郵箱的”設定”介面中,開啟“賬戶”的選項頁,找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務的模組,開啟POP3和IMAP服務,見如下,並獲取授權碼,該授權碼需要在Python程式碼中使用。

郵件傳送程式碼示例

如下為郵件傳送程式碼,請把星號替換為你所使用的真實的郵箱。

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


def send_email_test():

    mail_host = "smtp.qq.com"               
    mail_user = "*******@qq.com"      
    mail_pass = "***************"               # 授權密碼,非登入密碼

    sender = '*******@qq.com'   
    receivers = ['*******@qq.com'] 
    content = 'Python example'
    title = 'this is a super mail!'  
        
    send_email(mail_host, mail_user, mail_pass, sender, receivers, title, content)
    
def send_email(mail_host, mail_user, mail_pass, sender, receivers, title, content):

    message = MIMEText(content, 'plain', 'utf-8')
    message['From'] = "{}".format(sender)
    message['To'] = ",".join(receivers)
    message['Subject'] = title

    try:
        smtpObj = smtplib.SMTP_SSL(mail_host, 465)
        smtpObj.login(mail_user, mail_pass)
        smtpObj.sendmail(sender, receivers, message.as_string())
        print("mail has been send successfully.")
    except smtplib.SMTPException as e:
        print(e)

if __name__ == '__main__':
    send_email_test()
    # receiver = '***'
    # send_email2(mail_host, mail_user, mail_pass, receiver, title, content)

在執行後列印如下,檢視郵箱,可以收到相應郵件

如果您喜歡這邊文章,請記得點贊和評論哦!

2018年11月3日 香港演員藍潔瑛去世,享年55歲,

漂亮的她,一生不幸,

歷經雪藏、情變、受辱、破產、自殺,

晚年平淡淒涼,

願天堂裡不再有磨難!