前言 關於 Python 這個欄目,咕了幾個月了,今天講講如何發送驗證碼並驗證。 因為部分原因,寫這篇文章的時候心情是不太好的,播放首歌吧。 代碼 導入 導入yagmail,random和time庫 import yagmail,random,time #導入 yagmail , rando ...
前言
關於 Python 這個欄目,咕了幾個月了,今天講講如何發送驗證碼並驗證。
因為部分原因,寫這篇文章的時候心情是不太好的,播放首歌吧。
代碼
導入
- 導入
yagmail
,random
和time
庫
import yagmail,random,time #導入 yagmail , random 和 time 庫
詢問用戶信息
- 詢問用戶
昵稱
與郵箱
, 並設置驗證碼
ss = input("您的昵稱:")#詢問用戶昵稱
yonghu = input("您的郵箱:")#詢問用戶郵箱
key = random.randint(0,999999)#設置驗證碼
鏈接郵箱伺服器
- 鏈接郵箱SMTP伺服器發信
yag = yagmail.SMTP( user="**郵箱賬號**", password="**郵箱密碼或授權碼**", host='**郵箱SMTP伺服器**')#鏈接郵箱伺服器發信
- 後續可能會出教程獲取授權碼,QQ郵箱的伺服器是:smtp.qq.com;騰訊企業郵箱的伺服器是:smtp.exmail.qq.com;
設置郵件主題
- 設置郵件發送時的主題
subject = [" JunJun.Tec 驗證碼"]
設置郵件內容
- 設置郵件發送時的內容
- 以下提供郵件
HTML
代碼參考 ,也可不帶格式。
<table style="width: 99.8%; height: 95%;">
<tbody>
<tr>
<td id="QQMAILSTATIONERY" style="background:url(https://rescdn.qqmail.com/bizmail/zh_CN/htmledition/images/xinzhi/bg/a_02.jpg) no-repeat #fffaf6; min-height:550px; padding:100px 55px 200px 100px; ">
<div style="text-align: center;"><font>{},您好! </font></div>
<div style="text-align: center;"><font><br>
</font>
</div>
<div style="text-align: center;"><font>您的 JunJun.Tec 驗證碼/臨時登錄密碼 為 </font></div>
<div style="text-align: center;"><font><br>
</font>
</div>
<div style="text-align: center;"><font color="#ff0000"><b><u>{}</u></b></font></div>
<div style="text-align: center;"><font><br>
</font>
</div>
<div style="text-align: center;"><font>如非您本人操作無需理會。 </font></div>
<div style="text-align: center;"><font><br>
</font>
</div>
<div style="text-align: center;"><font>感謝支持。</font></div>
</td>
</tr>
</tbody>
</table>
<div><includetail><!--<![endif]--></includetail></div>
- 註明,代碼內的 {} 無需修改,稍後需要嵌入驗證碼。如果自行編寫,需要 {} 從而加入驗證碼。
以下提供Python
代碼
contents = ['''
<table style="width: 99.8%; height: 95%;">
<tbody>
<tr>
<td id="QQMAILSTATIONERY" style="background:url(https://rescdn.qqmail.com/bizmail/zh_CN/htmledition/images/xinzhi/bg/a_02.jpg) no-repeat #fffaf6; min-height:550px; padding:100px 55px 200px 100px; ">
<div style="text-align: center;"><font>{},您好! </font></div>
<div style="text-align: center;"><font><br>
</font>
</div>
<div style="text-align: center;"><font>您的 JunJun.Tec 驗證碼/臨時登錄密碼 為 </font></div>
<div style="text-align: center;"><font><br>
</font>
</div>
<div style="text-align: center;"><font color="#ff0000"><b><u>{}</u></b></font></div>
<div style="text-align: center;"><font><br>
</font>
</div>
<div style="text-align: center;"><font>如非您本人操作無需理會。 </font></div>
<div style="text-align: center;"><font><br>
</font>
</div>
<div style="text-align: center;"><font>感謝支持。</font></div>
</td>
</tr>
</tbody>
</table>
<div><includetail><!--<![endif]--></includetail></div>
'''.format(ss,key)]#使用 ''' 嵌入HTML代碼,使用 format 嵌入稱呼(ss)與驗證碼(key)
使用 '''
嵌入HTML
代碼,使用 format
嵌入稱呼(ss)
與驗證碼(key)
發送郵件
- 使用
Yagmail
向用戶發信
yag.send(yonghu,subject, contents)#發送郵件
print("驗證碼郵件發送成功")
詢問用戶驗證碼
- 使用
input
向用戶詢問驗證碼
keypass2 = input("輸入您的驗證碼:")#詢問用戶驗證碼
- 如果你直接拿
用戶提交的變數(keypass2)
與驗證碼變數(key)
進行比較,你就會發現bug
,原因是兩者格式不同,所以我們要對用戶提交的變數(keypass2)
進行處理
處理用戶的驗證碼
- 對驗證碼進行處理
keypass = int(keypass2)#對 keypass2 進行 int 處理
- 比對驗證碼
if keypass == key:
print('correct!')# 正確
else:
print("Error!")# 錯誤
仍需改進的地方
- 還有許多內容沒做,其中包括
輸入錯誤驗證碼後等待再發送
,防止多次請求
等等。
完整代碼
import yagmail,random,time #導入 yagmail , random 和 time 庫
ss = input("您的昵稱:")#詢問用戶昵稱
yonghu = input("您的郵箱:")#詢問用戶郵箱
key = random.randint(0,999999)#設置驗證碼
yag = yagmail.SMTP( user="**郵箱賬號**", password="**郵箱密碼或授權碼**", host='**郵箱SMTP伺服器**')#鏈接郵箱伺服器發信
subject = [" JunJun.Tec 驗證碼"]
contents = ['''
<table style="width: 99.8%; height: 95%;">
<tbody>
<tr>
<td id="QQMAILSTATIONERY" style="background:url(https://rescdn.qqmail.com/bizmail/zh_CN/htmledition/images/xinzhi/bg/a_02.jpg) no-repeat #fffaf6; min-height:550px; padding:100px 55px 200px 100px; ">
<div style="text-align: center;"><font>{},您好! </font></div>
<div style="text-align: center;"><font><br>
</font>
</div>
<div style="text-align: center;"><font>您的 JunJun.Tec 驗證碼/臨時登錄密碼 為 </font></div>
<div style="text-align: center;"><font><br>
</font>
</div>
<div style="text-align: center;"><font color="#ff0000"><b><u>{}</u></b></font></div>
<div style="text-align: center;"><font><br>
</font>
</div>
<div style="text-align: center;"><font>如非您本人操作無需理會。 </font></div>
<div style="text-align: center;"><font><br>
</font>
</div>
<div style="text-align: center;"><font>感謝支持。</font></div>
</td>
</tr>
</tbody>
</table>
<div><includetail><!--<![endif]--></includetail></div>
'''.format(ss,key)]#使用 ''' 嵌入HTML代碼,使用 format 嵌入稱呼(ss)與驗證碼(key)
yag.send(yonghu,subject, contents)#發送郵件
print("驗證碼郵件發送成功")
keypass2 = input("輸入您的驗證碼:")#詢問用戶驗證碼
keypass = int(keypass2)#對 keypass2 進行 int 處理
if keypass == key:
print('correct!')# 正確
else:
print("Error!")# 錯誤
演示
寫在最後
Python
還是挺有意思的,但是想讓本Python
代碼打包為小白操作的軟體,還需要進行優化,編寫GUI,那我們下期再見!
本文發佈在博客園,鏈接:https://www.cnblogs.com/jonyam/p/python-sand-email.html
本文發佈在JunJun's Blog,鏈接:http://blog.itscn.top/index.php/2020/07/13