Django2.0 SMTPRecipientsRefused (550, b'Неверная аутентификация (вы можете отправлять только из @ yourdomain.xy или его псевдонимов) ') - PullRequest
0 голосов
/ 26 октября 2018

У меня проблема при попытке сбросить пароль. Я настроил файл settings.py в соответствии с руководством по Coreys на YouTube: Python Django - электронная почта и пароль или Vitor Freitas инструкция. Запуск этого на моей локальной виртуальной машине не вызывает никаких проблем.

Также, когда я бегу send_mail(mail_subject, message, mail_sender,[mail_recipient]) с from django.core.mail import send_mail не вызывает никаких проблем на моем сервере в Канаде - он (это он :-)) может отправить электронное письмо через службу электронной почты, расположенную в Австрии.

Сообщение об ошибке в консоли или браузере: (полное сообщение об ошибке см. Внизу)

Request Method: POST Request URL: http://mydomain.xy/password-reset/ Django Version: 2.0 Exception Type: SMTPRecipientsRefused Exception Value: {'myemail@mydomain.xy': (550, b'Invalid authentication (you can only send from @mydomain.xy or its aliases)')} Exception Location /usr/lib/python3.5/smtplib.py in sendmail, line 876 Python Executable: ~/django_env/bin/python3 Python Version: 3.5.2 Python Path: ['~/django_env/mwrench_dev', '~/django_env/lib/python35.zip', '~/django_env/lib/python3.5', '~/django_env/lib/python3.5/plat-x86_64-linux-gnu', '~/django_env/lib/python3.5/lib-dynload', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '~/django_env/lib/python3.5/site-packages']

Что-то должно отличаться между функцией send_mail () из django.core.mail и smtplib.py, используемым из серверной части. Но я не могу понять, в чем проблема.

В моем urls.py

path(r'password-reset/', auth_views.PasswordResetView.as_view(template_name='registration/password_reset_form.html'), ame='password_reset'),
path(r'password-reset-done/', auth_views.PasswordResetDoneView.as_view(template_name='registration/password_reset_done.html'), name='password_reset_done'),
path(r'password-reset-confirm/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(template_name='registration/password_reset_confirm.html'), name='password_reset_confirm'),

В пределах settings.py, если определены эти строки

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'mail.domainname.xy'
EMAIL_PORT = 587
EMAIL_USE_TLS=TRUE
EMAIL_HOST_USER='user@domainname.xy'
EMAIL_HOST_PASSWORD='mypassword'

** Полное сообщение об ошибке:

Request Method: POST
Request URL: http://www.example.com/password-reset/

Django Version: 2.0
Python Version: 3.5.2
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'rest_framework',
 'crispy_forms',
]
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']



Traceback:

File "~/django_env/lib/python3.5/site-packages/django/core/handlers/exception.py" in inner
  35.             response = get_response(request)

File "~/django_env/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
  128.                 response = self.process_exception_by_middleware(e, request)

File "~/django_env/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
  126.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "~/django_env/lib/python3.5/site-packages/django/views/generic/base.py" in view
  69.             return self.dispatch(request, *args, **kwargs)

File "~/django_env/lib/python3.5/site-packages/django/utils/decorators.py" in _wrapper
  62.             return bound_func(*args, **kwargs)

File "~/django_env/lib/python3.5/site-packages/django/utils/decorators.py" in _wrapped_view
  142.                     response = view_func(request, *args, **kwargs)

File "~/django_env/lib/python3.5/site-packages/django/utils/decorators.py" in bound_func
  58.                 return func.__get__(self, type(self))(*args2, **kwargs2)

File "~/django_env/lib/python3.5/site-packages/django/contrib/auth/views.py" in dispatch
  406.         return super().dispatch(*args, **kwargs)

File "~/django_env/lib/python3.5/site-packages/django/views/generic/base.py" in dispatch
  89.         return handler(request, *args, **kwargs)

File "~/django_env/lib/python3.5/site-packages/django/views/generic/edit.py" in post
  142.             return self.form_valid(form)

File "~/django_env/lib/python3.5/site-packages/django/contrib/auth/views.py" in form_valid
  419.         form.save(**opts)

File "~/django_env/lib/python3.5/site-packages/django/contrib/auth/forms.py" in save
  306.                 email, html_email_template_name=html_email_template_name,

File "~/django_env/lib/python3.5/site-packages/django/contrib/auth/forms.py" in send_mail
  260.         email_message.send()

File "~/django_env/lib/python3.5/site-packages/django/core/mail/message.py" in send
  294.         return self.get_connection(fail_silently).send_messages([self])

File "~/django_env/lib/python3.5/site-packages/django/core/mail/backends/smtp.py" in send_messages
  110.                 sent = self._send(message)

File "~/django_env/lib/python3.5/site-packages/django/core/mail/backends/smtp.py" in _send
  126.             self.connection.sendmail(from_email, recipients, message.as_bytes(linesep='\r\n'))

File "/usr/lib/python3.5/smtplib.py" in sendmail
  876.             raise SMTPRecipientsRefused(senderrs)

Exception Type: SMTPRecipientsRefused at /password-reset/
Exception Value: {'emyemail@gmail.com': (550, b'Invalid authentication (you can only send from @mydomain.com or its aliases)')}

1 Ответ

0 голосов
/ 26 октября 2018

Нашел Здесь

Мне нужно было добавить переменную отправителя по умолчанию в файл settings.py - я не знал, какой из них использовал мой Django-Setup.

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'mail.domainname.xy'
EMAIL_PORT = 587
EMAIL_USE_TLS=TRUE
EMAIL_HOST_USER='user@domainname.xy'
EMAIL_HOST_PASSWORD='mypassword'

Added:
DEFAULT_FROM_EMAIL = 'user@domainname.xy'

Спасибо за просмотр поста!

...