2017-03-18 48 views
0

我想在我的web應用程序中使用燒瓶郵件,並且我錯誤地認爲我不太瞭解。遵循了指導原則,無法使其發揮作用。在下面的過程中,我希望應用程序向新的註冊用戶發送電子郵件。燒瓶郵件TypeError:getaddrinfo()參數1必須是字符串或無

配置:

MAIL_SERVER='smtp.gmail.com', 
MAIL_PORT=465, 
MAIL_USE_SSL=True, 
MAIL_USE_TLS=False, 
MAIL_USERNAME = '[email protected]', 
MAIL_PASSWORD = '******' 

查看:

from flask_mail import Mail, Message 
mail = Mail(app) 


@app.route("/send_mail/") 
def send_mail(): 
    msg = Message('Hello', sender = '[email protected]', recipients = ['[email protected]']) 
    msg.body = "This is the email body" 
    mail.send(msg) 

錯誤我得到:

File "C:\venvs\test\lib\site-packages\flask\app.py", line 1994, in __call__ 
return self.wsgi_app(environ, start_response) 
File "C:\venvs\test\lib\site-packages\flask\app.py", line 1985, in wsgi_app 
response = self.handle_exception(e) 
File "C:\venvs\test\lib\site-packages\flask\app.py", line 1540, in handle_exception 
reraise(exc_type, exc_value, tb) 
File "C:\venvs\test\lib\site-packages\flask\_compat.py", line 33, in reraise 
raise value 
File "C:\venvs\test\lib\site-packages\flask\app.py", line 1982, in wsgi_app 
response = self.full_dispatch_request() 
File "C:\venvs\test\lib\site-packages\flask\app.py", line 1614, in full_dispatch_request 
rv = self.handle_user_exception(e) 
File "C:\venvs\test\lib\site-packages\flask\app.py", line 1517, in handle_user_exception 
reraise(exc_type, exc_value, tb) 
File "C:\venvs\test\lib\site-packages\flask\_compat.py", line 33, in reraise 
raise value 
File "C:\venvs\test\lib\site-packages\flask\app.py", line 1612, in full_dispatch_request 
rv = self.dispatch_request() 
File "C:\venvs\test\lib\site-packages\flask\app.py", line 1598, in dispatch_request 
return self.view_functions[rule.endpoint](**req.view_args) 
File "C:\venvs\test\views.py", line 202, in send_mail 
mail.send(msg) 
File "C:\venvs\test\lib\site-packages\flask_mail.py", line 491, in send 
with self.connect() as connection: 
File "C:\venvs\test\lib\site-packages\flask_mail.py", line 144, in __enter__ 
self.host = self.configure_host() 
File "C:\venvs\test\lib\site-packages\flask_mail.py", line 156, in configure_host 
host = smtplib.SMTP_SSL(self.mail.server, self.mail.port) 
File "C:\Python\lib\smtplib.py", line 1029, in __init__ 
source_address) 
File "C:\Python\lib\smtplib.py", line 251, in __init__ 
(code, msg) = self.connect(host, port) 
File "C:\Python\lib\smtplib.py", line 335, in connect 
self.sock = self._get_socket(host, port, self.timeout) 
File "C:\Python\lib\smtplib.py", line 1035, in _get_socket 
self.source_address) 
File "C:\Python\lib\socket.py", line 704, in create_connection 
for res in getaddrinfo(host, port, 0, SOCK_STREAM): 
File "C:\Python\lib\socket.py", line 743, in getaddrinfo 
for res in _socket.getaddrinfo(host, port, family, type, proto, flags): 
TypeError: getaddrinfo() argument 1 must be string or None 

任何想法?

回答

2

您在配置文件中的設置似乎有一個尾隨逗號,這將使它們成爲元組。 Flask-Mail抱怨傳入getaddrinfo的host值不是一個字符串 - 它很可能是一個元組。

刪除尾隨逗號可能會解決此問題。

+0

我不敢相信我遇到了同樣的事情!謝謝! – markand

+0

你不知道這有什麼幫助!我的代碼工作完美,然後只進行了少量更改,一切都停止了,但這個答案有所幫助 – crakama

相關問題