Python實現(xiàn)SMTP發(fā)送郵件詳細教程
簡介
Python發(fā)送郵件的教程本人在網(wǎng)站搜索的時候搜索出來了一大堆,但是都是說了一大堆原理然后就推出了實現(xiàn)代碼,我測試用給出的代碼進行發(fā)送郵件時都不成功,后面找了很久才找到原因,這都是沒有一個詳細的環(huán)境調(diào)試導致,所以今天特出一個詳細的教程,一步一步從環(huán)境調(diào)試到代碼實現(xiàn)整一個教程,希望對還在苦苦尋找解決方法卻遲遲不能得到有效解決的人員一點幫助。
SMTP協(xié)議
首先了解SMTP(簡單郵件傳輸協(xié)議),郵件傳送代理程序使用SMTP協(xié)議來發(fā)送電郵到接收者的郵件服務(wù)器。SMTP協(xié)議只能用來發(fā)送郵件,不能用來接收郵件,而大多數(shù)的郵件發(fā)送服務(wù)器都是使用SMTP協(xié)議。SMTP協(xié)議的默認TCP端口號是25。
環(huán)境調(diào)試
上面說了是使用SMTP協(xié)議發(fā)送的郵件,所以需要先查看您的發(fā)件人郵箱是否有開啟SMTP協(xié)議,如沒有需要開啟,我測試使用的是163.com的郵箱作為發(fā)信人郵箱,開啟SMTP協(xié)議如下圖所示。
1.先登錄到163.com郵箱中(網(wǎng)易郵箱),如下圖
2.看到郵箱上面的功能欄中有一個“設(shè)置”的選項,單擊該選項,然后選擇下拉菜單的“POP3/SMTP/IMAP”
3.如下圖所示,上面紅框的兩個必須勾選上,如沒有勾選,要選擇開啟就可以勾選上了,然后可以看到下面紅框里是:SMTP服務(wù)器:smtp.163.com
實現(xiàn)代碼
經(jīng)過上面的設(shè)置后就將環(huán)境調(diào)試好了,下面就可以實現(xiàn)代碼了,推薦使用pycharm4.5.3編輯器來編寫代碼,下面的代碼在python2.7和python3.4版本測試都可使用。
#coding:utf-8 #強制使用utf-8編碼格式 import smtplib #加載smtplib模塊 from email.mime.text import MIMEText from email.utils import formataddr my_sender='發(fā)件人郵箱賬號' #發(fā)件人郵箱賬號,為了后面易于維護,所以寫成了變量 my_user='收件人郵箱賬號' #收件人郵箱賬號,為了后面易于維護,所以寫成了變量 def mail(): ret=True try: msg=MIMEText('填寫郵件內(nèi)容','plain','utf-8') msg['From']=formataddr(["發(fā)件人郵箱昵稱",my_sender]) #括號里的對應(yīng)發(fā)件人郵箱昵稱、發(fā)件人郵箱賬號 msg['To']=formataddr(["收件人郵箱昵稱",my_user]) #括號里的對應(yīng)收件人郵箱昵稱、收件人郵箱賬號 msg['Subject']="主題" #郵件的主題,也可以說是標題 server=smtplib.SMTP("smtp.xxx.com",25) #發(fā)件人郵箱中的SMTP服務(wù)器,端口是25 server.login(my_sender,"發(fā)件人郵箱密碼") #括號中對應(yīng)的是發(fā)件人郵箱賬號、郵箱密碼 server.sendmail(my_sender,[my_user,],msg.as_string()) #括號中對應(yīng)的是發(fā)件人郵箱賬號、收件人郵箱賬號、發(fā)送郵件 server.quit() #這句是關(guān)閉連接的意思 except Exception: #如果try中的語句沒有執(zhí)行,則會執(zhí)行下面的ret=False ret=False return ret ret=mail() if ret: print("ok") #如果發(fā)送成功則會返回ok,稍等20秒左右就可以收到郵件 else: print("filed") #如果發(fā)送失敗則會返回filed
如果發(fā)送成功則會返回ok,否則為執(zhí)行不成功,如下圖:
開拓視野
雖然代碼可以用了,但是不免得有些人就愛瞎折騰,玩著玩著就把代碼玩壞了,所以這里附上幾個知識點以解你之疑惑。
1.看到上面代碼第一行的“#coding:utf-8”沒有,相信很多看這代碼的人都不怎么注意這一行,反正這和代碼實現(xiàn)又沒啥關(guān)系,保存時選擇utf-8格式就行了嘛;告訴你們哦這一行代碼在python中非常重要,最好寫每一頁都要加上強制字符編碼,因為python2版本它默認識別ASCII編碼,所以當中文字符出現(xiàn)在python中它是不認的,出現(xiàn)的錯誤提示如下圖所示:
錯誤提示示例:File"F:/python/s12/pymail.py",line2
SyntaxError:Non-ASCIIcharacter'\xe5'infileF:/python/s12/pymail.pyonline2,butnoencodingdeclared;seehttp://www.python.org/peps/pep-0263.htmlfordetails
所以當出現(xiàn)上面的編碼錯誤提示時,可以在頁面的第一行加上
#coding:utf-8 #強制編碼為utf-8
或
#coding:GBK #強制編碼為GBK
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- python發(fā)送郵件的實例代碼(支持html、圖片、附件)
- python中使用smtplib和email模塊發(fā)送郵件實例
- Python實現(xiàn)自動發(fā)送郵件功能
- Python實現(xiàn)給qq郵箱發(fā)送郵件的方法
- python同時給兩個收件人發(fā)送郵件的方法
- python實現(xiàn)發(fā)送郵件及附件功能
- Python SMTP發(fā)送郵件遇到的一些問題及解決辦法
- python實現(xiàn)自動發(fā)送郵件發(fā)送多人、群發(fā)、多附件的示例
- 利用Python自動監(jiān)控網(wǎng)站并發(fā)送郵件告警的方法
- python實現(xiàn)發(fā)送郵件
相關(guān)文章
Blender?Python編程實現(xiàn)批量導入網(wǎng)格并保存渲染圖像
這篇文章主要為大家介紹了Blender?Python?編程實現(xiàn)批量導入網(wǎng)格并保存渲染圖像示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08關(guān)于Theano和Tensorflow多GPU使用問題
這篇文章主要介紹了關(guān)于Theano和Tensorflow多GPU使用問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06Python常用時間操作總結(jié)【取得當前時間、時間函數(shù)、應(yīng)用等】
這篇文章主要介紹了Python常用時間操作,包括取得當前時間、時間函數(shù)、應(yīng)用等概念與相關(guān)操作技巧,需要的朋友可以參考下2017-05-05解決Numpy報錯:ImportError: numpy.core.multiarray faile
這篇文章主要介紹了解決Numpy報錯:ImportError: numpy.core.multiarray failed問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01python中matplotlib調(diào)整圖例位置的方法實例
在matplotlib中,一般圖例默認是在圖表內(nèi)部的,如果要放置到圖例外面,需要對坐標進行指定,下面這篇文章主要給大家介紹了關(guān)于python中matplotlib調(diào)整圖例位置的相關(guān)資料,需要的朋友可以參考下2022-06-06