2017-03-18 2 views
0

필자의 webapp에서 플라스크 메일을 사용하고 싶지만 실제로 이해가되지 않는 오류가 있습니다. 다음 지침을 따르고 작동시키지 못합니다. 다음 과정에서 앱이 새로운 등록 사용자에게 이메일을 보내길 원합니다.flask-mail TypeError : getaddrinfo() 인수 1은 string 또는 None이어야합니다.

구성 :

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

관련 문제