用Flask mail傳送郵件失敗解決方案

2021-07-16 23:01:44 字數 2777 閱讀 1801

在看flask-web開發第六章的時候發現執行書上的**有錯誤,在掙扎了一中午,終於找到問題所在以及解決方法:

shell方面:

from hello import mail

from flask_mail import message

from hello import mail

msg = message('test mail', sender='***@qq.com',

recipients=['***@.qq.com'])

msg.body = 'text body'

msg.html = 'htmlbody'

mail.send(msg)

在ps中設定了環境變數:

(venv) $ set mail_username=******xx

@qq.com #此處填寫你的賬戶

(venv) $ set mail_password=******* #此處填寫你的密碼

設定完進shell,執行書上**,錯誤如下:

traceback (most recent call last):

file "", line

2, in

file "d:\flasky\env\lib\site-packages\flask_mail.py", line

492, in

send

message.send(connection)

file "d:\flasky\env\lib\site-packages\flask_mail.py", line

427, in

send

connection.send(self)

file "d:\flasky\env\lib\site-packages\flask_mail.py", line

192, in

send

message.rcpt_options)

file "c:\python27\lib\smtplib.py", line

736, in sendmail

raise smtpsenderrefused(code, resp, from_addr)

smtpsenderrefused: (503, 'error: need ehlo and auth first !', u'******[email protected]')

出的錯誤太多了,改著改著還有這種:smtpsenderrefused:(553,'mail from must equal authorized user…………

os.environ

.get("mail_username") # 獲取環境變數中你所輸入的值

隨後我就在shell裡試了試,居然是none,這麼說我之前改的環境變數沒設定進去,問題這就出來了

接下來是想盡一些辦法成功設定環境變數,書上的示例**如下:

(venv) $ set mail_username=(venv) $ set mail_password=
但還是none,我想要不換cmd試試?,結果就在cmd中輸入環境變數(之前一直是poweshell):

(venv) $ set mail_username=******xx

(venv) $ set mail_password=11111

(env) d:\flasky\env>python hello.py shell

>>> import os

>>> os.environ.get('mail_username')

'******xx'

>>> os.environ.get('mail_password')

'11111'

這說明set是在cmd裡的命令,我一直誤會了,關於在ps中設定環境變數的操作我也找了,看下面:

# 檢視所有環境變數  

ls env:

# 搜尋環境變數

ls env:

node*

# 檢視單個環境變數

$env

:node_env

# 新增/更新環境變數

$env

:node_env=development

# 刪除環境變數

del evn:

node_env

對比cmd:

#powershell設定環境變數

#檢視所有環境變數

ls env:

#搜尋環境變數

ls env:node*

#檢視單個環境變數

$env:node_env

#新增/更新環境變數

$env:node_env=development

#刪除環境變數

del evn:node_env

對比cmd:

# 檢視所有環境變數     

set# 檢視單個環境變數

set node_env

# 新增/更新環境變數

set node_env=development

# 刪除環境變數

set node_env=

說一下需要注意的坑:

flask mail郵件傳送

1.普通的郵件傳送 基本模板搭建 from flask mail import mail,message import os 郵件配置,一定要放在物件建立之前 郵箱伺服器 163.com qq.com 等 使用者名稱 密碼 可以將密碼設定在環境變數裡,可以在終端設定set 名字 值 建立傳送郵件的物...

使用flask mail傳送郵件

mail server smtp.qq.com mail port 465 mail use tls false mail use ssl true 注意此處,很多人配置發不出去和這個是有關係的 mail password mail username qq.com usr bin env pytho...

Flask之flask mail郵件傳送

為什麼要使用flask mail傳送郵件?因為python自帶的email包比較底層,使用起來比較麻煩。安裝flask mail pip install flask mail配置 flask mail mail server 預設為 localhost 這裡我配置qq郵箱伺服器 smtp.qq.co...