2015-11-05 159 views
0

我试图让个人网站上的联系表单工作。 我使用smtp展望。 现在它给了我下面的错误:Django电子邮件发送错误

回溯:

Environment: 


Request Method: POST 
Request URL: ******* 

Django Version: 1.8.1 
Python Version: 3.4.0 
Installed Applications: 
('django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles') 
Installed Middleware: 
('django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.clickjacking.XFrameOptionsMiddleware', 
'django.middleware.security.SecurityMiddleware') 


Traceback: 
File "/home/Nmaster88/Ngranja/lib/python3.4/site-packages/django/core/handlers/base.py" in get_response 
    132.      response = wrapped_callback(request, *callback_args, **callback_kwargs) 
File "/home/Nmaster88/Ngranja/Ngranja/Ngranja/views.py" in sendmail 
    23.    send_mail(request.POST['contactSubject'],"From: "+request.POST['contactEmail']+'\n\n'+request.POST['contactMessage'],request.POST['contactEmail'],['[email protected]'],) 
File "/home/Nmaster88/Ngranja/lib/python3.4/site-packages/django/core/mail/__init__.py" in send_mail 
    62.  return mail.send() 
File "/home/Nmaster88/Ngranja/lib/python3.4/site-packages/django/core/mail/message.py" in send 
    303.   return self.get_connection(fail_silently).send_messages([self]) 
File "/home/Nmaster88/Ngranja/lib/python3.4/site-packages/django/core/mail/backends/smtp.py" in send_messages 
    100.    new_conn_created = self.open() 
File "/home/Nmaster88/Ngranja/lib/python3.4/site-packages/django/core/mail/backends/smtp.py" in open 
    58.    self.connection = connection_class(self.host, self.port, **connection_params) 
File "/usr/lib/python3.4/smtplib.py" in __init__ 
    242.    (code, msg) = self.connect(host, port) 
File "/usr/lib/python3.4/smtplib.py" in connect 
    321.   self.sock = self._get_socket(host, port, self.timeout) 
File "/usr/lib/python3.4/smtplib.py" in _get_socket 
    292.           self.source_address) 
File "/usr/lib/python3.4/socket.py" in create_connection 
    509.   raise err 
File "/usr/lib/python3.4/socket.py" in create_connection 
    500.    sock.connect(sa) 

Exception Type: ConnectionRefusedError at/
Exception Value: [Errno 111] Connection refused 

我的设置:

EMAIL_HOST = 'smtp-mail.outlook.com' 
EMAIL_HOST_USER = '[email protected]' 
EMAIL_HOST_PASSWORD = 'mypassword' 
EMAIL_PORT = 25 
EMAIL_USE_TLS = True 

视图文件:

from django.http import HttpResponseRedirect 
from django.core.mail import send_mail 
from django.shortcuts import render 

def sendmail(request): 
    errors=[] 
    if request.method == 'POST': 
     if not request.POST.get('contactName',''): 
      errors.append('Coloca um nome.') 
     if not request.POST.get('contactEmail',''): 
      errors.append('Coloca um email.') 
     if not request.POST.get('contactSubject',''): 
      errors.append('Coloca um assunto.') 
     if not request.POST.get('contactMessage',''): 
      errors.append('Coloca um assunto.') 
     if not errors: 
      subject=request.POST['contactSubject'] 
      email=request.POST['contactEmail'] 
      message=request.POST['contactMessage'] 
      send_mail(subject,"From: "+email+'\n\n'+message,email,['[email protected]'], fail_silently=False) 
      return HttpResponseRedirect('/thankyou/') 
    return render(request, "mypage.html", {'errors': errors}) 

有谁有什么线索是错的? 如果有必要,我可以给应用程序更多的信息

[编辑] 我在pythonanywhere.com托管的页面,错误是否与服务器有关?

[编辑]已解决 Pythonanywhere免费用户只能用于Gmail,我必须授予它不太安全的应用程序的权限!现在它工作正常。

+0

如果你打开一个REPL,导入smtplib,并尝试连接到你的SMTP服务器,你能得到一个实际的连接?您使用本地交换服务器还是Office 365?您使用TLS还是SSL SNMP? –

+0

您是否正在运行[它们的防火墙](https://help.pythonanywhere.com/pages/SMTPForFreeUsers/)? – dhke

+0

在他们的论坛上,他们说,只有谷歌Gmail的作品。我现在使用gmail配置。我现在的错误是另一回事。我有一个SMTPAuthenticationError。 – Nmaster88

回答

0

尝试在您的SMTP设置中使用use_ssl=True并将端口更改为465

您可以直接参考Django SMTP options获取您可以调整的所有设置的列表。 也请提及您用于构建应用程序的Django版本?

+0

Django版本:1.8.1 – Nmaster88

+0

@ Nmaster88,你有没有尝试过以上选项? –

+0

是的,我尝试过,仍然没有成功,也许我做错了我不知道。 – Nmaster88