這篇文章主要介紹了Python實現SMTP發送郵件詳細教程,附SMTP郵件發送程式碼,有興趣的小夥伴們可以參考一下
簡介
#Python發送郵件的教程本人在網站搜索的時候搜索出來了一大堆,但是都是說了一大堆原理然後就推出了實現代碼,我測試用給出的代碼進行發送郵件時都不成功,後面找了很久才找到原因,這都是沒有一個詳細的環境調試導致,所以今天特出一個詳細的教程,一步一步從環境調試到代碼實現整一個教程,希望對還在苦苦尋找解決方法卻遲遲不能得到有效解決的人員一點幫助。
SMTP協定
首先了解SMTP(簡單郵件傳輸協定),郵件傳送代理程式使用SMTP協定來傳送電子郵件到接收者的郵件伺服器。 SMTP協定只能用來傳送郵件,不能用來接收郵件,而大多數的郵件傳送伺服器都是使用SMTP協定。 SMTP協定的預設TCP連接埠號碼是25。
環境偵錯
上面說了是使用SMTP協定發送的郵件,所以需要先查看您的寄件者信箱是否有開啟SMTP協議,如沒有需要開啟,我測試使用的是163.com的郵箱作為寄信人信箱,開啟SMTP協定如下圖所示。
1.先登入163.com信箱中(網易信箱),如下圖
2.看到郵箱上面的功能列中有一個「設定」的選項,點擊該選項,然後選擇下拉選單的“POP3/SMTP/IMAP”
#3.如下圖所示,上面紅框的兩個必須勾選上,如沒有勾選,要選擇開啟就可以勾選上了,然後可以看到下面紅框裡是:##SMTP伺服器:smtp.163.com
#實作程式碼
經過上面的設定後就將環境調試好了,下面就可以實作程式碼了,建議使用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='发件人邮箱账号' #发件人邮箱账号,为了后面易于维护,所以写成了变量 my_user='收件人邮箱账号' #收件人邮箱账号,为了后面易于维护,所以写成了变量 def mail(): ret=True try: msg=MIMEText('填写邮件内容','plain','utf-8') msg['From']=formataddr(["发件人邮箱昵称",my_sender]) #括号里的对应发件人邮箱昵称、发件人邮箱账号 msg['To']=formataddr(["收件人邮箱昵称",my_user]) #括号里的对应收件人邮箱昵称、收件人邮箱账号 msg['Subject']="主题" #邮件的主题,也可以说是标题 server=smtplib.SMTP("smtp.xxx.com",25) #发件人邮箱中的SMTP服务器,端口是25 server.login(my_sender,"发件人邮箱密码") #括号中对应的是发件人邮箱账号、邮箱密码 server.sendmail(my_sender,[my_user,],msg.as_string()) #括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件 server.quit() #这句是关闭连接的意思 except Exception: #如果try中的语句没有执行,则会执行下面的ret=False ret=False return ret ret=mail() if ret: print("ok") #如果发送成功则会返回ok,稍等20秒左右就可以收到邮件 else: print("filed") #如果发送失败则会返回filed如果發送成功則會回傳ok,否則為執行不成功,如下圖:
開拓視野
雖然程式碼可以用了,但是不免得有些人就愛瞎折騰,玩著玩著就把程式碼玩壞了,所以這裡附上幾個知識點以解你之疑惑。 1.看到上面程式碼第一行的「#coding:utf-8」沒有,相信很多看這程式碼的人都不太注意這一行,反正這和程式碼實作又沒啥關係,儲存時選擇utf-8格式就行了嘛;告訴你們哦這一行代碼在python中非常重要,最好寫每一頁都要加上強製字符編碼,因為python2版本它默認識別ASCII編碼,所以當中文字符出現在python中它是不認的,出現的錯誤提示如下圖所示:錯誤提示#範例: 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
所以當出現上面的編碼錯誤提示時,可以在頁面的第一行加上#coding:utf-8 #強制編碼為utf-8
或coding:GBK #強制編碼為GBK
【相關推薦】5. php smtp發送郵件
7. python smtplib模組傳送SSL/TLS安全郵件實例
以上是分享Python實作SMTP發送郵件圖文實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!