Python-傳送郵件驗證碼
阿新 • • 發佈:2020-07-02
## 前言
關於 Python 這個欄目,咕了幾個月了,今天講講如何傳送驗證碼並驗證。
因為部分原因,寫這篇文章的時候心情是不太好的,播放首歌吧。
***
## 程式碼
### 匯入
- 匯入`yagmail`,`random`和`time`庫
```python
import yagmail,random,time #匯入 yagmail , random 和 time 庫
```
### 詢問使用者資訊
- 詢問使用者`暱稱`與`郵箱` , 並設定驗證碼
```python
ss = input("您的暱稱:")#詢問使用者暱稱
yonghu = input("您的郵箱:")#詢問使用者郵箱
key = random.randint(0,999999)#設定驗證碼
```
### 連結郵箱伺服器
- 連結郵箱SMTP伺服器發信
```python
yag = yagmail.SMTP( user="**郵箱賬號**", password="**郵箱密碼或授權碼**", host='**郵箱SMTP伺服器**')#連結郵箱伺服器發信
```
- 後續可能會出教程獲取授權碼,QQ郵箱的伺服器是:smtp.qq.com;騰訊企業郵箱的伺服器是:smtp.exmail.qq.com;
### 設定郵件主題
- 設定郵件傳送時的主題
```python
subject = [" JunJun.Tec 驗證碼"]
```
### 設定郵件內容
- 設定郵件傳送時的內容
- 以下提供郵件`HTML`程式碼參考 ,也可不帶格式。
```html
```
- 註明,程式碼內的 {} 無需修改,稍後需要嵌入驗證碼。如果自行編寫,需要 {} 從而加入驗證碼。
以下提供`Python`程式碼
```python
contents = ['''
'''.format(ss,key)]#使用 ''' 嵌入HTML程式碼,使用 format 嵌入稱呼(ss)與驗證碼(key)
```
使用 `'''` 嵌入`HTML`程式碼,使用 `format` 嵌入`稱呼(ss)`與`驗證碼(key)`
### 傳送郵件
- 使用`Yagmail`向用戶發信
```python
yag.send(yonghu,subject, contents)#傳送郵件
print("驗證碼郵件傳送成功")
```
### 詢問使用者驗證碼
- 使用`input`向用戶詢問驗證碼
```python
keypass2 = input("輸入您的驗證碼:")#詢問使用者驗證碼
```
- 如果你直接拿`使用者提交的變數(keypass2)`與`驗證碼變數(key)`進行比較,你就會發現`bug`,原因是兩者格式不同,所以我們要對`使用者提交的變數(keypass2)`進行處理
### 處理使用者的驗證碼
- 對驗證碼進行處理
```python
keypass = int(keypass2)#對 keypass2 進行 int 處理
```
- 比對驗證碼
```python
if keypass == key:
print('correct!')# 正確
else:
print("Error!")# 錯誤
```
### 仍需改進的地方
- 還有許多內容沒做,其中包括`輸入錯誤驗證碼後等待再發送`,`防止多次請求`等等。
***
## 完整程式碼
```python
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 = ['''
'''.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!")# 錯誤
```
***
## 演示
![郵件](https://ae01.alicdn.com/kf/He2f63472cca14c849c108d63e91521d5q.jpg)
![演示效果](https://ae01.alicdn.com/kf/Hcc7e612e7b3d484786e6400c10a7aee9j.jpg)
***
## 寫在最後
`Python`還是挺有意思的,但是想讓本`Python`程式碼打包為小白操作的軟體,還需要進行優化,編寫GUI,那我們下期再見!
[本文釋出在部落格園,連結:https://www.cnblogs.com/jonyam/p/python-sand-email.html](https://www.cnblogs.com/jonyam/p/python-sand-email.html) [本文釋出在JunJun's Blog,連結:http://blog.itscn.top/index.php/2020/07/13](http://blog.itscn.top/index.php/202
{},您好!
您的 JunJun.Tec 驗證碼/臨時登入密碼 為 {} 如非您本人操作無需理會。 感謝支援。 |
{},您好!
您的 JunJun.Tec 驗證碼/臨時登入密碼 為 {} 如非您本人操作無需理會。 感謝支援。 |
您的 JunJun.Tec 驗證碼/臨時登入密碼 為 {} 如非您本人操作無需理會。 感謝支援。 |
[本文釋出在部落格園,連結:https://www.cnblogs.com/jonyam/p/python-sand-email.html](https://www.cnblogs.com/jonyam/p/python-sand-email.html) [本文釋出在JunJun's Blog,連結:http://blog.itscn.top/index.php/2020/07/13](http://blog.itscn.top/index.php/202