简体   繁体   English

如何使用 django 的 send_mail 修复网络无法访问?

[英]How to fix Network is unreachable with django's send_mail?

Failed to send mail with django's send_mail() over a 3g data connection as I tether from my phone.当我从手机连接时,无法通过 3g 数据连接使用 django 的send_mail()发送邮件。 It takes a while and fails with a Network is unreachable error ,需要一段时间并失败并出现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.另一方面,通过4g connection发送邮件是成功的。 I have a poor knowledge with networks and thus i cannot understand the cause.我对网络知之甚少,因此我无法理解原因。 EDIT Doing this via localhost.编辑通过本地主机执行此操作。

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 .它记录在此处

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM