Django发送邮件[Errno -2]名称或服务未知

时间:2017-04-15 19:11:10

标签: django email

我在Django

发送邮件时遇到问题

我按照以下链接设置了我的Gmail:

我在线尝试了所有解决方案,但仍然得到[Errno -2]

我发现有人说这是因为DNS问题,有人可以告诉我我的代码有什么问题吗?有没有解决方案?

views.py

import django
from django import settings
from django.core.mail import send_mail

def contact(request):
    send_mail('subject','message',settings.EMAIL_HOST_USER,['zwt467875460@gmail.com'],fail_silently = False)
    return HttpResponseRedirect('/contact/thanks')
def thanks(request): 
    return HttpResponse('thanks!')

settings.py

#email config
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gamil.com'
EMAIL_PORT = 587
EMAIL_HOST_USER='zwt467875460@gmail.com'
EMAIL_HOST_PASSWORD='*********'        #my gmail password
EMAIL_USER_TLS = True
DEFAULT_FORM_EMAIL = EMAIL_HOST_USER
ACCOUNT_EMAIL_VERIFICATION = 'none'

追溯错误

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/Django-1.10.6-py2.7.egg/django/core/handlers/exception.py", line 42, in inner
response = get_response(request)
  File "/usr/local/lib/python2.7/dist-packages/Django-1.10.6-py2.7.egg/django/core/handlers/base.py", line 187, in _get_response
response = self.process_exception_by_middleware(e, request)
  File "/usr/local/lib/python2.7/dist-packages/Django-1.10.6-py2.7.egg/django/core/handlers/base.py", line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/wenting/WTDjango/mysite/books/views.py", line 30, in contact
send_mail('subject','message',settings.EMAIL_HOST_USER,['zwt467875460@gmail.com'],fail_silently = False)
  File "/usr/local/lib/python2.7/dist-packages/Django-1.10.6-py2.7.egg/django/core/mail/__init__.py", line 62, in send_mail
return mail.send()
  File "/usr/local/lib/python2.7/dist-packages/Django-1.10.6-py2.7.egg/django/core/mail/message.py", line 342, in send
return self.get_connection(fail_silently).send_messages([self])
  File "/usr/local/lib/python2.7/dist-packages/Django-1.10.6-py2.7.egg/django/core/mail/backends/smtp.py", line 100, in send_messages
new_conn_created = self.open()
  File "/usr/local/lib/python2.7/dist-packages/Django-1.10.6-py2.7.egg/django/core/mail/backends/smtp.py", line 58, in open
self.connection = connection_class(self.host, self.port, **connection_params)
  File "/usr/lib/python2.7/smtplib.py", line 256, in __init__
(code, msg) = self.connect(host, port)
  File "/usr/lib/python2.7/smtplib.py", line 316, in connect
self.sock = self._get_socket(host, port, self.timeout)
  File "/usr/lib/python2.7/smtplib.py", line 291, in _get_socket
return socket.create_connection((host, port), timeout)
  File "/usr/lib/python2.7/socket.py", line 557, in create_connection
for res in getaddrinfo(host, port, 0, SOCK_STREAM):
gaierror: [Errno -2] Name or service not known
[15/Apr/2017 18:45:56] "GET /contact/ HTTP/1.1" 500 102295

并在Django错误页面中:

Exception Location:     /usr/lib/python2.7/socket.py in create_connection, line 557

我想我的问题是Gmail认为我没有固定或正确的DNS 所以我不能创建一个套接字

然后我尝试了sendmail: 安装sendmail,sendmail-cf并配置后,

我试过了:

 echo "Subject: sendmail test" | sendmail -v zwt467875460@gmail.com

,输出是(我省略了发送细节):

354 Enter mail, end with "." on a line by itself
>>> .
050 <zwt467875460@gmail.com>... Connecting to smtp.gmail.com via relay...
050 <zwt467875460@gmail.com>... Deferred: Connection refused by smtp.gmail.com
250 2.0.0 v3GKMtLU003555 Message accepted for deliveryzwt467875460@gmail.com... Sent (v3GKMtLU003555 Message accepted for delivery)
Closing connection to [127.0.0.1]
>>> QUIT
221 2.0.0 localhost.localdomain closing connection

连接被smtp.gmail.com

拒绝

1 个答案:

答案 0 :(得分:0)

检查您的Gmail帐户设置是否启用了IMAP / POP。 同时检查是否启用了对“安全性较低的应用”的访问权限。 如果没有,请点击链接:https://support.google.com/accounts/answer/6010255