Удаленный хост принудительно прервал существующее соединение

#python #django #sendmail

Вопрос:

Я пытаюсь отправить себе настоящее электронное письмо со своего веб-сайта, используя send_mail. Я использовал localhost и следующую команду cmd,

 python -m smtpd -n -c DebuggingServer localhost:1025  

для того, чтобы проверить это. Он перехватывает без проблем, но я ничего не вижу в своем почтовом ящике.

Мой провайдер электронной почты работает с SSL, поэтому я переключил его на True и включил «доступ к почтовому ящику с помощью почтовых клиентов» в настройках моей почты.

Вот это settings.py файл:

 EMAIL_HOST = '178.68.164.41' # My current ip address EMAIL_PORT = '465' # Port of the email host  EMAIL_HOST_USER = 's...6@rambler.ru' # Here is my actual email  EMAIL_HOST_PASSWORD = '.....' # Here is my actual password from my email login   EMAIL_USE_TLS = False  EMAIL_USE_SSL = True  

Вот это views.py файл:

 from django.shortcuts import render  from django.core.mail import send_mail  from .forms import ContactForm    def contact(request):  form = ContactForm  if request.method == 'POST':   message_name = request.POST.get('name')   message_email = request.POST.get('email')   message = request.POST.get('message')  send_mail(message_name, message, message_email, ['s****6@rambler.ru'])  return render(request, 'contact.html', {'form': form})  

Вот исключение:

 Internal Server Error: /contact/ Traceback (most recent call last):  File "C:Users1AppDataLocalProgramsPythonPython38libsite-packagesdjangocorehandlersexception.py", line 47, in inner  response = get_response(request)  File "C:Users1AppDataLocalProgramsPythonPython38libsite-packagesdjangocorehandlersbase.py", line 181, in _get_response  response = wrapped_callback(request, *callback_args, **callback_kwargs)  File "C:Users1PycharmProjectsStasProjectsales_projectcontactviews.py", line 12, in contact  send_mail(message_name, message, message_email, ['sta6006@rambler.ru'])  File "C:Users1AppDataLocalProgramsPythonPython38libsite-packagesdjangocoremail__init__.py", line 61, in send_mail  return mail.send()  File "C:Users1AppDataLocalProgramsPythonPython38libsite-packagesdjangocoremailmessage.py", line 284, in send  return self.get_connection(fail_silently).send_messages([self])  File "C:Users1AppDataLocalProgramsPythonPython38libsite-packagesdjangocoremailbackendssmtp.py", line 102, in send_messages  new_conn_created = self.open()  File "C:Users1AppDataLocalProgramsPythonPython38libsite-packagesdjangocoremailbackendssmtp.py", line 62, in open  self.connection = self.connection_class(self.host, self.port, **connection_params)  File "C:Users1AppDataLocalProgramsPythonPython38libsmtplib.py", line 1043, in __init__  SMTP.__init__(self, host, port, local_hostname, timeout,  File "C:Users1AppDataLocalProgramsPythonPython38libsmtplib.py", line 255, in __init__  (code, msg) = self.connect(host, port)  File "C:Users1AppDataLocalProgramsPythonPython38libsmtplib.py", line 339, in connect  self.sock = self._get_socket(host, port, self.timeout)  File "C:Users1AppDataLocalProgramsPythonPython38libsmtplib.py", line 1051, in _get_socket  new_socket = self.context.wrap_socket(new_socket,  File "C:Users1AppDataLocalProgramsPythonPython38libssl.py", line 500, in wrap_socket  return self.sslsocket_class._create(  File "C:Users1AppDataLocalProgramsPythonPython38libssl.py", line 1040, in _create  self.do_handshake()  File "C:Users1AppDataLocalProgramsPythonPython38libssl.py", line 1309, in do_handshake  self._sslobj.do_handshake()  Exception Type: ConnectionResetError at /contact/ Exception Value: [WinError 10054] Remote host forcibly terminated existing connection  

Комментарии:

1. Порт 465 предназначен специально для протокола TLS, но для MAIL_USE_TLS установлено значение false. Вы должны использовать порт 587 с параметром MAIL_USE_TLS, равным True.

2. @TimRoberts я сделал это, и теперь там написано SMTPConnectError at /contact/ (421, b'Cannot connect to SMTP server 178.68.174.185 (178.68.174.185:587), connect error 10061')

3. Хм, так что, возможно, ваш почтовый сервер отстает от стандартов. Итак, вернитесь к 465, но попробуйте оставить MAIL_USE_TLS в True.

4. @TimRoberts это либо «принудительно прекращено», либо «неожиданно закрыто» таким образом

5. Ваш комментарий в строке EMAIL_HOST гласит «Мой текущий ip-адрес». Это буквально правда? Потому что это должен быть хост или адрес вашего почтового сервера.