欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python模塊smtplib實現純文本郵件發(fā)送功能

 更新時間:2018年05月22日 11:31:23   作者:Marksinoberg  
這篇文章主要為大家詳細介紹了python模塊smtplib實現純文本郵件發(fā)送功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下

今天學到了如何使用Python的smtplib庫發(fā)送郵件,中間也是遇到了各種各樣的錯誤和困難,還好都一一的解決了。下面來談一談我的這段經歷。

配置你的郵箱

為什么要配置郵箱呢?具體要配置什么呢?

因為我們申請的一些免費郵箱都是默認不開啟smtp/pop協議的。
SMTP是發(fā)郵件使用到的計算機網絡中應用層協議中的一個;而POP則是收郵件時使用到的計算機網絡中的應用層協議的其中一個。這都是理論性的知識了,上過計算機網絡這門課的想必都知道,就不多說了。

配置就是要開啟這項服務。否則我們就不能實現用Python代碼來控制發(fā)送和接收郵件了。

我們在配置完成之后,系統會提示給我們一個郵箱客戶端的授權碼。作用就是我們登陸的時候替代原來的登陸密碼。大家一定要完善保存咯。我這里采用的是163的郵箱,所以是可以自己設置這個授權碼的。

使用代碼發(fā)郵件

還是按照,先看代碼再研究的策略。如下:

# coding:utf-8

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

"""
請確保自己的郵箱的smtp協議開啟,都則會出現認證的錯誤的,如ssh等
"""


sender = "1564086XXXX@163.com"
# 收件人,可以是多個
receivers = ['102170XXXX@qq.com']

# 三個參數:第一個為純文本,第二個plain設置文本格式,第三個為編碼格式
message = MIMEText('這里是發(fā)送的郵件的主要的內容。Pure Text Here!','plain','utf-8')
message['From'] = Header('來自Mark','utf-8')
message['To'] = Header('測試標題','utf-8')

subject = '哈哈哈哈哈哈,這是郵件的主題 '
message['Subject'] = Header(subject,'utf-8')

try:
 smtpObj = smtplib.SMTP()
 smtpObj.connect('smtp.163.com',25)
 smtpObj.login(sender,'你的客戶端授權碼')
 smtpObj.sendmail(sender,receivers,message.as_string())
 smtpObj.quit()
 print '郵件已成功發(fā)送了'
except smtplib.SMTPException,e:
 print e.message

測試的結果:

D:\Software\Python2\python.exe E:/Code/Python/MyTestSet/mail/PureText.py
郵件已成功發(fā)送了

Process finished with exit code 0

確實是成功發(fā)送了的。

代碼探查

下面就來深入的研究一下發(fā)送郵件實現的流程吧。我們注意到了,最最主要的是下面的這樣一段代碼。

smtpObj = smtplib.SMTP()
smtpObj.connect('smtp.163.com',25)
smtpObj.login(sender,'你的客戶端授權碼')
smtpObj.sendmail(sender,receivers,\
message.as_string()
smtpObj.quit()

不難看出,主要是經歷了下面的這些流程:

  • 獲得SMTP服務
  • 連接服務器
  • 模擬客戶端登陸
  • 實現發(fā)送郵件
  • 退出登錄

其中核心的也就是客戶端登陸和發(fā)送郵件的兩個步驟。模擬登陸的時候需要注意的就是使用你自己的授權碼就行了,沒什么難度。而發(fā)送郵件的時候需要注意一下參數。發(fā)件人是一個,而收件人是一個列表,里面可以有很多個收件人(這樣可以借助這個列表實現郵件的群發(fā))。

其他需要注意的也就是使用MIME類型的數據,和使用utf-8編碼就行了。屬于非智力相關的內容。所以不用太在意。會用就可以了。

這樣看來,發(fā)個郵件什么的也不是很難嘛。(^__^) 嘻嘻……

錯誤總結

錯誤一:500、530等5開頭的錯誤,大致為什么ssh異常啊什么的。有點web常識的都知道,5開頭的錯誤代碼一般都是服務器內部的錯誤,所以這基本上可以判斷出我們的代碼其實沒有出錯。我們主要的排錯方向應該是服務器端了(當然了,凡是沒有任何的絕對,但這種情況出現的概率確實是很小的)。這時,我們要檢查一下自己的郵箱的SMTP/POP服務開啟了沒有啊等等

錯誤二:授權碼沒有寫或者填寫成了自己的郵箱之前的密碼,錯誤提示一般都是認證相關的。這一點屬于低級錯誤了。因為在配置完自己的SMTP/POP服務之后,系統會發(fā)還一個短信提示,告知用戶要使用授權碼替代原密碼登陸郵箱。所以使用你的授權碼進行登錄唄。

錯誤三:代碼中的錯誤。這就更加的不應該了,少寫了必填項,或者編碼沒添加等類似的錯誤是我們應該極力避免的,所以盡量保證自己的代碼的正確。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Python魔術方法專題

    Python魔術方法專題

    這篇文章主要介紹了Python魔術方法的的相關資料,文章講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-06-06
  • python模塊內置屬性概念及實例

    python模塊內置屬性概念及實例

    在本篇內容里小編給大家分享的是一篇關于python模塊內置屬性概念及實例內容,有興趣的朋友們可以學習下。
    2021-02-02
  • Python tkinter布局與按鈕間距設置方式

    Python tkinter布局與按鈕間距設置方式

    這篇文章主要介紹了Python tkinter布局與按鈕間距設置方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Python的NumPy使用之數組過濾

    Python的NumPy使用之數組過濾

    這篇文章主要介紹了Python的NumPy使用之數組過濾,在 NumPy中,我們使用布爾索引列表來過濾數組布爾索引列表是與數組中的索引相對應的布爾值列表,需要的朋友可以參考下
    2023-07-07
  • Python爬取商家聯系電話以及各種數據的方法

    Python爬取商家聯系電話以及各種數據的方法

    今天小編就為大家分享一篇Python爬取商家聯系電話以及各種數據的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • 利用python實現xml與數據庫讀取轉換的方法

    利用python實現xml與數據庫讀取轉換的方法

    這篇文章主要給大家介紹了關于利用python實現xml與數據庫讀取轉換的方法,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-06-06
  • 利用python3如何給數據添加高斯噪聲

    利用python3如何給數據添加高斯噪聲

    高斯噪聲既是符合高斯正態(tài)分布的誤差,一些情況下我們需要向標準數據中加入合適的高斯噪聲會讓數據變得有一定誤差而具有實驗價值,下面這篇文章主要給大家介紹了關于利用python3如何給數據添加高斯噪聲的相關資料,需要的朋友可以參考下
    2022-03-03
  • python如何將文件a.txt的內容復制到b.txt中

    python如何將文件a.txt的內容復制到b.txt中

    這篇文章主要介紹了python如何將文件a.txt的內容復制到b.txt中,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 深入詳解Python中生成器的原理與應用

    深入詳解Python中生成器的原理與應用

    生成器 是Python中一種非常實用的特性,它能幫助我們編寫高效的代碼,本文將詳細為大家介紹生成器的原理、用法以及實際應用場景,有需要的小伙伴可以了解下
    2023-12-12
  • python正則表達中的re庫常用方法總結

    python正則表達中的re庫常用方法總結

    這篇文章主要介紹了python正則表達中的re庫常用方法總結文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下
    2022-08-08

最新評論