在代理后面的django中使用send_mail时的gaierror

时间:2015-12-26 18:20:02

标签: python django proxy sendmail

我试图使用gmail从我的Django应用程序发送电子邮件。我已将这些电子邮件设置添加到settings.py

EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'myemail@gmail.com'
EMAIL_HOST_PASSWORD = 'mypassword'
EMAIL_PORT = 587
EMAIL_USE_TLS = True

但它会引发此名称解析错误:

Traceback (most recent call last):
File "/usr/lib/python3.4/code.py", line 90, in runcode
  exec(code, self.locals)
File "<console>", line 1, in <module>
File "/usr/local/lib/python3.4/dist-packages/Django-1.8.7-py3.4.egg/django/core/mail/__init__.py", line 62, in send_mail
  return mail.send()
File "/usr/local/lib/python3.4/dist-packages/Django-1.8.7-py3.4.egg/django/core/mail/message.py", line 303, in send
  return self.get_connection(fail_silently).send_messages([self])
File "/usr/local/lib/python3.4/dist-packages/Django-1.8.7-py3.4.egg/django/core/mail/backends/smtp.py", line 100, in send_messages
  new_conn_created = self.open()
File "/usr/local/lib/python3.4/dist-packages/Django-1.8.7-py3.4.egg/django/core/mail/backends/smtp.py", line 58, in open
  self.connection = connection_class(self.host, self.port, **connection_params)
File "/usr/lib/python3.4/smtplib.py", line 242, in __init__
  (code, msg) = self.connect(host, port)
File "/usr/lib/python3.4/smtplib.py", line 321, in connect
  self.sock = self._get_socket(host, port, self.timeout)
File "/usr/lib/python3.4/smtplib.py", line 292, in _get_socket
  self.source_address)
File "/usr/lib/python3.4/socket.py", line 494, in create_connection
  for res in getaddrinfo(host, port, 0, SOCK_STREAM):
File "/usr/lib/python3.4/socket.py", line 533, in getaddrinfo
  for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -2] Name or service not known

注意:我在代理服务器后面工作。

此外,我尝试通过套接字连接到google.com:

import socket
socket.gethostbyname('www.google.com')

它抛出:

[Errno 11001] getaddrinfo failed

1 个答案:

答案 0 :(得分:1)

  1. 在gmail.com中启用pop3
  2. 为django应用程序创建特定密码 (http://support.google.com/accounts/bin/answer.py?hl=en&answer=185833
  3. 解决方案here