liunx環境下 python使用stmplib 發郵箱

linux  發送郵箱存在一些問題,  首先  必須使用SSL 加密操作, 端口  必須爲465,    同時使用SSL 的時候還有一些問題, 必須再構造函數中傳入Host(郵箱網站地址) ,    終於成功了,         

smtp_obj = smtplib.SMTP_SSL(host=HOST)

詳細代碼在下方,  大概說下流程

我使用的是163郵箱 ,首先你得 在163郵箱設置   運行客戶端登陸 發郵箱,  

具體操作如下 :

之後再開啓客戶端授權碼

這樣操作就完成了 ,

代碼編寫  :

    # 網易163郵箱
    HOST = 'smtp.163.com'
    # 2> 配置服務的端口,默認的郵件端口是25. 465爲ssl 的端口
    PORT = '465'
    # 3> 指定發件人和收件人。
    FROM = '[email protected]'
    # TO = 'xxxxx.@163com'
    # 4> 郵件標題
    SUBJECT = '爬蟲異常警告'
    # 5> 郵件內容
    CONTENT = message + "\n" + str(ex)

    # 創建郵件發送對象
    # 普通的郵件發送形式
    #smtp_obj = smtplib.SMTP()

    # 數據在傳輸過程中會被加密。
    smtp_obj = smtplib.SMTP_SSL(host=HOST)

    # 需要進行發件人的認證,授權。
    # smtp_obj就是一個第三方客戶端對象
    smtp_obj.connect(host=HOST, port=PORT)

    # 如果使用第三方客戶端登錄,要求使用授權碼,不能使用真實密碼,防止密碼泄露。
    res = smtp_obj.login(user=FROM, password='授權碼')
    print('登錄結果:', res)

    # 發送郵件
    msg = '\n'.join(
        ['From: {}'.format(FROM), 'To: {}'.format(TO), 'Subject: {}'.format(SUBJECT), '', CONTENT])  # ''此單引號不能少
    smtp_obj.sendmail(from_addr=FROM, to_addrs=TO, msg=msg.encode('utf-8'))

 

這個是通過我整理出來的, 你可能覺得,粘貼複製就能運行,很簡單   卻不知道我開始踩坑的幸苦,   如果可以點個贊吧 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章