2015-11-27 4 views
1

Я работаю над приложением Django, которое имеет функцию отправки писем пользователям. В тестовом примере у меня есть контактная форма, которая отправляет данные формы как часть сообщения электронной почты, используя smtp через gmail. Я отключил captchas, поскольку мне сообщили в this video playlist, что я слежу за учебниками, но когда я нажимаю кнопку отправки, я почему-то получаю [Errno 111]. Увидев this и another SO post, я узнал, что мне нужно было запустить сайт на живом сервере (а не только на локальном хосте), чтобы иметь возможность отправить электронное письмо. Однако, когда я попробовал это на сервере, я получил ту же ошибку, что и раньше. Я почти уверен, что выполнил все правильные шаги, так что может быть проблемой?Django- [Errno 111] Connection отказался при использовании smtp

Вот отслеживающий ошибки:

Django Version: 1.8.6 
Python Version: 2.7.6 
Installed Applications: 
('django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'artist_tracker') 
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 "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response 
    132.      response = wrapped_callback(request, *callback_args, **callback_kwargs) 
File "/var/www/students/ceyron/bandsync/src/bandsync-repo/artist_tracker/views.py" in contact 
    58.  send_mail(subject, contact_message, from_email, to_email, fail_silently =False) 
File "/usr/local/lib/python2.7/dist-packages/django/core/mail/__init__.py" in send_mail 
    62.  return mail.send() 
File "/usr/local/lib/python2.7/dist-packages/django/core/mail/message.py" in send 
    303.   return self.get_connection(fail_silently).send_messages([self]) 
File "/usr/local/lib/python2.7/dist-packages/django/core/mail/backends/smtp.py" in send_messages 
    107.     sent = self._send(message) 
File "/usr/local/lib/python2.7/dist-packages/django/core/mail/backends/smtp.py" in _send 
    123.    self.connection.sendmail(from_email, recipients, message.as_bytes(linesep='\r\n')) 
File "/usr/lib/python2.7/smtplib.py" in sendmail 
    731.    raise SMTPSenderRefused(code, resp, from_addr) 

Exception Type: SMTPSenderRefused at /contact/ 
Exception Value: (530, '5.5.1 Authentication Required. Learn more at\n5.5.1 https://support.google.com/mail/answer/14257 j34sm10137713qkh.39 - gsmtp', u'[email protected]') 

форма контакта из views.py файла

from django.shortcuts import render 
from django.conf import settings 
from .forms import ContactForm, SignUpForm 
# Create your views here. 

from django.core.mail import send_mail 

def contact(request): 
    form = ContactForm(request.POST or None) 
    if form.is_valid(): 
     # for key, value in form.cleaned_data.iteritems(): 
     # print key, value 
     form_email = form.cleaned_data.get("email") 
     form_message = form.cleaned_data.get("message") 
     form_full_name = form.cleaned_data.get("full_name") 
     # print form.cleaned_data 
     subject = "Site contact form" 
     from_email = settings.EMAIL_HOST_USER 
     to_email = [from_email, '[email protected]'] 
     contact_message = ''' 
     %s: %s via %s 
     '''%(form_full_name, form_message, form_email) 
     send_mail(subject, contact_message, from_email, [to_email], fail_silently = True) 

    context = { 
     "form": form 
    } 
    return render(request, "forms.html", context) 
+0

toemail = '' .join (to_email) и передать строку send_mail – pavan

ответ

1

В вашем коде;

to_email = [from_email, '[email protected]'] 

- это список, и вы снова передаете аргумент__имя внутри списка.

Измените это;

send_mail(subject, contact_message, from_email, [to_email], fail_silently = True) 

в

send_mail(subject, contact_message, from_email, to_email, fail_silently = True) 
+0

Спасибо за новый ответ. Похоже, что есть некоторая ошибка аутентификации. Я только что обновил сообщение с новым журналом трассировки. Я устанавливаю fail_silently в False, поэтому я не уверен, что это вызвало бы проблему. – loremIpsum1771

+0

Кажется, отдельный вопрос, поэтому я просто задаю еще один вопрос, спасибо. – loremIpsum1771

1

В настройках изменения файла этот

EMAIL_HOSTS = 'smtp.gmail.com' 
EMAIL_HOSTS_USER = "[email protected]" 

в

EMAIL_HOST = 'smtp.gmail.com' 
EMAIL_HOST_USER = "[email protected]" 
+0

Спасибо, что, казалось, чтобы решить одну ошибку, но теперь я получаю ошибку типа так или иначе. Я редактировал сообщение с журналом трассировки. Вы знаете, что происходит? – loremIpsum1771

+1

Можете ли вы разместить свои мнения для/contact/ –

+0

Привет, я просто добавил его в сообщение, спасибо – loremIpsum1771

Смежные вопросы