How to fix Network is unreachable with django'

2019-08-15 13:45发布

问题:

Failed to send mail with django's send_mail() over a 3g data connection as I tether from my phone. It takes a while and fails with a Network is unreachable error,

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/root/.virtualenvs/local_env/local/lib/python2.7/site-packages/django/core/mail/__init__.py", line 62, in send_mail
    return mail.send()
  File "/root/.virtualenvs/local_env/local/lib/python2.7/site-packages/django/core/mail/message.py", line 283, in send
    return self.get_connection(fail_silently).send_messages([self])
  File "/root/.virtualenvs/local_env/local/lib/python2.7/site-packages/django/core/mail/backends/smtp.py", line 92, in send_messages
    new_conn_created = self.open()
  File "/root/.virtualenvs/local_env/local/lib/python2.7/site-packages/django/core/mail/backends/smtp.py", line 50, in open
    self.connection = connection_class(self.host, self.port, **connection_params)
  File "/usr/lib/python2.7/smtplib.py", line 251, in __init__
    (code, msg) = self.connect(host, port)
  File "/usr/lib/python2.7/smtplib.py", line 311, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "/usr/lib/python2.7/smtplib.py", line 286, in _get_socket
    return socket.create_connection((host, port), timeout)
  File "/usr/lib/python2.7/socket.py", line 571, in create_connection
    raise err
error: [Errno 101] Network is unreachable

On the other, sending mail on a 4g connection is successful. I have a poor knowledge with networks and thus i cannot understand the cause. EDIT Doing this via localhost.

回答1:

Since you're only using your phone when doing local development, maybe it is an option to not actually send the email, but just print it to the console.

To do that, put this in your settings:

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

It is documented here.