问题描述
我目前正在尝试让 Flask-Mail 在 heroku 上工作,但一直遇到各种问题。
一般代码是这样的:
from threading import Thread
from flask import render_template,current_app
from flask_mail import Message
from app import mail
def send_async_email(app,msg):
with app.app_context():
mail.send(msg)
print("message sent)
def send_email(subject,sender,recipients,text_body,html_body):
msg = Message(subject,sender=sender,recipients=recipients)
msg.body = text_body
msg.html = html_body
Thread(target=send_async_email,args=(current_app._get_current_object(),msg)).start()
差不多是这样: https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-x-email-support
现在我的问题似乎是当我在 heroku 上运行它时。 在我的机器/开发环境中,代码运行良好,我得到了“已发送消息”打印语句,虽然我的收件箱中没有收到电子邮件,但这很好,它执行时没有错误,我可以解决缺少电子邮件的问题在我设法让它在 Heroku 上以与在我的开发机器上相同的方式执行之后到达..
当我在 Heroku 上运行相同的代码时,我在日志中收到以下消息:
2021-04-06T10:14:41.736652+00:00 app[web.1]: Exception in thread Thread-2:
2021-04-06T10:14:41.736661+00:00 app[web.1]: Traceback (most recent call last):
2021-04-06T10:14:41.736662+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py",line 425,in resolve
2021-04-06T10:14:41.736662+00:00 app[web.1]: use_network=use_network)
2021-04-06T10:14:41.736663+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py",line 380,in query
2021-04-06T10:14:41.736663+00:00 app[web.1]: return end()
2021-04-06T10:14:41.736664+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py",line 359,in end
2021-04-06T10:14:41.736664+00:00 app[web.1]: raise result[1]
2021-04-06T10:14:41.736664+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py",line 340,in step
2021-04-06T10:14:41.736665+00:00 app[web.1]: a = fun(*args,**kwargs)
2021-04-06T10:14:41.736665+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/dns/resolver.py",line 1091,in query
2021-04-06T10:14:41.736666+00:00 app[web.1]: True)
2021-04-06T10:14:41.736667+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/dns/resolver.py",line 1043,in resolve
2021-04-06T10:14:41.736667+00:00 app[web.1]: timeout = self._compute_timeout(start,lifetime)
2021-04-06T10:14:41.736668+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/dns/resolver.py",line 950,in _compute_timeout
2021-04-06T10:14:41.736668+00:00 app[web.1]: raise Timeout(timeout=duration)
**2021-04-06T10:14:41.736668+00:00 app[web.1]: dns.exception.Timeout: The DNS operation timed out after 5.107004642486572 seconds**
2021-04-06T10:14:41.736669+00:00 app[web.1]:
2021-04-06T10:14:41.736669+00:00 app[web.1]: During handling of the above exception,another exception occurred:
2021-04-06T10:14:41.736670+00:00 app[web.1]:
2021-04-06T10:14:41.736670+00:00 app[web.1]: Traceback (most recent call last):
2021-04-06T10:14:41.736671+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/threading.py",line 916,in _bootstrap_inner
2021-04-06T10:14:41.736671+00:00 app[web.1]: self.run()
2021-04-06T10:14:41.736672+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/threading.py",line 864,in run
2021-04-06T10:14:41.736672+00:00 app[web.1]: self._target(*self._args,**self._kwargs)
2021-04-06T10:14:41.736672+00:00 app[web.1]: File "/app/app/email.py",line 9,in send_async_email
2021-04-06T10:14:41.736673+00:00 app[web.1]: mail.send(msg)
2021-04-06T10:14:41.736673+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask_mail.py",line 491,in send
2021-04-06T10:14:41.736674+00:00 app[web.1]: with self.connect() as connection:
2021-04-06T10:14:41.736674+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask_mail.py",line 144,in __enter__
2021-04-06T10:14:41.736675+00:00 app[web.1]: self.host = self.configure_host()
2021-04-06T10:14:41.736675+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask_mail.py",line 158,in configure_host
2021-04-06T10:14:41.736675+00:00 app[web.1]: host = smtplib.SMTP(self.mail.server,self.mail.port)
2021-04-06T10:14:41.736676+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/smtplib.py",line 251,in __init__
2021-04-06T10:14:41.736676+00:00 app[web.1]: (code,msg) = self.connect(host,port)
2021-04-06T10:14:41.736677+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/smtplib.py",line 336,in connect
2021-04-06T10:14:41.736677+00:00 app[web.1]: self.sock = self._get_socket(host,port,self.timeout)
2021-04-06T10:14:41.736678+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/smtplib.py",line 307,in _get_socket
2021-04-06T10:14:41.736678+00:00 app[web.1]: self.source_address)
2021-04-06T10:14:41.736679+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/green/socket.py",line 44,in create_connection
2021-04-06T10:14:41.736679+00:00 app[web.1]: for res in getaddrinfo(host,SOCK_STREAM):
2021-04-06T10:14:41.736680+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py",line 517,in getaddrinfo
2021-04-06T10:14:41.736680+00:00 app[web.1]: qname,addrs = _getaddrinfo_lookup(host,family,flags)
2021-04-06T10:14:41.736681+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py",line 490,in _getaddrinfo_lookup
2021-04-06T10:14:41.736682+00:00 app[web.1]: raise err
2021-04-06T10:14:41.736682+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py",line 479,in _getaddrinfo_lookup
2021-04-06T10:14:41.736682+00:00 app[web.1]: answer = resolve(host,qfamily,False,use_network=use_network)
2021-04-06T10:14:41.736683+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py",line 432,in resolve
2021-04-06T10:14:41.736683+00:00 app[web.1]: raise EAI_EAGAIN_ERROR
2021-04-06T10:14:41.736684+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py",in _getaddrinfo_lookup
2021-04-06T10:14:41.736684+00:00 app[web.1]: answer = resolve(host,use_network=use_network)
2021-04-06T10:14:41.736685+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py",in resolve
2021-04-06T10:14:41.736685+00:00 app[web.1]: raise EAI_EAGAIN_ERROR
2021-04-06T10:14:41.736685+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/threading.py",in _bootstrap_inner
2021-04-06T10:14:41.736686+00:00 app[web.1]: self.run()
2021-04-06T10:14:41.736686+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/threading.py",in run
2021-04-06T10:14:41.736687+00:00 app[web.1]: self._target(*self._args,**self._kwargs)
2021-04-06T10:14:41.736687+00:00 app[web.1]: File "/app/app/email.py",in send_async_email
2021-04-06T10:14:41.736688+00:00 app[web.1]: mail.send(msg)
2021-04-06T10:14:41.736688+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask_mail.py",in send
2021-04-06T10:14:41.736688+00:00 app[web.1]: with self.connect() as connection:
2021-04-06T10:14:41.736689+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask_mail.py",in __enter__
2021-04-06T10:14:41.736689+00:00 app[web.1]: self.host = self.configure_host()
2021-04-06T10:14:41.736689+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask_mail.py",in configure_host
2021-04-06T10:14:41.736690+00:00 app[web.1]: host = smtplib.SMTP(self.mail.server,self.mail.port)
2021-04-06T10:14:41.736697+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/smtplib.py",in __init__
2021-04-06T10:14:41.736697+00:00 app[web.1]: (code,port)
2021-04-06T10:14:41.736698+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/smtplib.py",in connect
2021-04-06T10:14:41.736698+00:00 app[web.1]: self.sock = self._get_socket(host,self.timeout)
2021-04-06T10:14:41.736698+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/smtplib.py",in _get_socket
2021-04-06T10:14:41.736699+00:00 app[web.1]: self.source_address)
2021-04-06T10:14:41.736699+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/green/socket.py",in create_connection
2021-04-06T10:14:41.736700+00:00 app[web.1]: for res in getaddrinfo(host,SOCK_STREAM):
2021-04-06T10:14:41.736700+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py",in getaddrinfo
2021-04-06T10:14:41.736701+00:00 app[web.1]: qname,flags)
2021-04-06T10:14:41.736701+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py",in _getaddrinfo_lookup
2021-04-06T10:14:41.736701+00:00 app[web.1]: raise err
2021-04-06T10:14:41.736720+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py",in _getaddrinfo_lookup
2021-04-06T10:14:41.736721+00:00 app[web.1]: answer = resolve(host,use_network=use_network)
2021-04-06T10:14:41.736722+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py",in resolve
2021-04-06T10:14:41.736722+00:00 app[web.1]: raise EAI_EAGAIN_ERROR
2021-04-06T10:14:41.736722+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py",in _getaddrinfo_lookup
2021-04-06T10:14:41.736723+00:00 app[web.1]: answer = resolve(host,use_network=use_network)
2021-04-06T10:14:41.736723+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py",in resolve
2021-04-06T10:14:41.736723+00:00 app[web.1]: raise EAI_EAGAIN_ERROR
2021-04-06T10:14:41.736724+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/threading.py",in _bootstrap_inner
2021-04-06T10:14:41.736724+00:00 app[web.1]: self.run()
2021-04-06T10:14:41.736725+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/threading.py",in run
2021-04-06T10:14:41.736725+00:00 app[web.1]: self._target(*self._args,**self._kwargs)
2021-04-06T10:14:41.736725+00:00 app[web.1]: File "/app/app/email.py",in send_async_email
2021-04-06T10:14:41.736726+00:00 app[web.1]: mail.send(msg)
2021-04-06T10:14:41.736727+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask_mail.py",in send
2021-04-06T10:14:41.736727+00:00 app[web.1]: with self.connect() as connection:
2021-04-06T10:14:41.736728+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask_mail.py",in __enter__
2021-04-06T10:14:41.736728+00:00 app[web.1]: self.host = self.configure_host()
2021-04-06T10:14:41.736728+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flask_mail.py",in configure_host
2021-04-06T10:14:41.736729+00:00 app[web.1]: host = smtplib.SMTP(self.mail.server,self.mail.port)
2021-04-06T10:14:41.736729+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/smtplib.py",in __init__
2021-04-06T10:14:41.736730+00:00 app[web.1]: (code,port)
2021-04-06T10:14:41.736730+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/smtplib.py",in connect
2021-04-06T10:14:41.736730+00:00 app[web.1]: self.sock = self._get_socket(host,self.timeout)
2021-04-06T10:14:41.736731+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/smtplib.py",in _get_socket
2021-04-06T10:14:41.736731+00:00 app[web.1]: self.source_address)
2021-04-06T10:14:41.736732+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/green/socket.py",in create_connection
2021-04-06T10:14:41.736732+00:00 app[web.1]: for res in getaddrinfo(host,SOCK_STREAM):
2021-04-06T10:14:41.736732+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py",in getaddrinfo
2021-04-06T10:14:41.736733+00:00 app[web.1]: qname,flags)
2021-04-06T10:14:41.736733+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py",in _getaddrinfo_lookup
2021-04-06T10:14:41.736733+00:00 app[web.1]: raise err
2021-04-06T10:14:41.736734+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py",in _getaddrinfo_lookup
2021-04-06T10:14:41.736734+00:00 app[web.1]: answer = resolve(host,use_network=use_network)
2021-04-06T10:14:41.736734+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py",in resolve
2021-04-06T10:14:41.736735+00:00 app[web.1]: raise EAI_EAGAIN_ERROR
2021-04-06T10:14:41.736735+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py",in _getaddrinfo_lookup
2021-04-06T10:14:41.736735+00:00 app[web.1]: answer = resolve(host,use_network=use_network)
2021-04-06T10:14:41.736736+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/eventlet/support/greendns.py",in resolve
2021-04-06T10:14:41.736736+00:00 app[web.1]: raise EAI_EAGAIN_ERROR
**2021-04-06T10:14:41.736737+00:00 app[web.1]: socket.gaierror: [Errno -3] Lookup timed out**
我尝试了各种解决方案、更改端口、更改电子邮件提供商(gmail 和虚拟主机提供的电子邮件),但似乎找不到解决方案。
有什么想法吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)