Python-發送郵件驗證碼


前言

​ 未經授權,禁止轉載。轉載聯系郵箱i@r3r.top

​ 關於 Python 這個欄目,咕了幾個月了,今天講講如何發送驗證碼並驗證。

​ 因為部分原因,寫這篇文章的時候心情是不太好的,播放首歌吧。


代碼

導入

  • 導入yagmail,randomtime
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>{},您好!&nbsp;</font></div>
            <div style="text-align: center;"><font><br>
                </font>
            </div>
            <div style="text-align: center;"><font>您的 JunJun.Tec 驗證碼/臨時登錄密碼 為&nbsp;</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>如非您本人操作無需理會。&nbsp;</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>{},您好!&nbsp;</font></div>
            <div style="text-align: center;"><font><br>
                </font>
            </div>
            <div style="text-align: center;"><font>您的 JunJun.Tec 驗證碼/臨時登錄密碼 為&nbsp;</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>如非您本人操作無需理會。&nbsp;</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>{},您好!&nbsp;</font></div>
            <div style="text-align: center;"><font><br>
                </font>
            </div>
            <div style="text-align: center;"><font>您的 JunJun.Tec 驗證碼/臨時登錄密碼 為&nbsp;</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>如非您本人操作無需理會。&nbsp;</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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM