SMTPSenderRefused Ошибка Django: (501, b'<settings.EMAIL_HOST_USER>: адрес отправителя должен содержать домен', 'settings.EMAIL_HOST_USER')
Я работаю над проектом на Django. У меня есть контактная форма. Я хочу, чтобы когда кто-то заполняет форму, мой info@mydomain.com отправлял на мой gmail уведомление типа "Кто-то заполнил вашу форму". Что забавно, уведомление успешно приходит на мой gmail! Все работает хорошо, но ошибка все еще возникает!
Когда я перехожу к контактной форме и отправляю ее, появляется страница с ошибкой, которая гласит:
SMTPSenderRefused в /contact/
(501, b'
Django Version: 5.0.2
Тип исключения: SMTPSenderRefused
Значение исключения:
(501, b'
А вот мои коды:
Settings.py
# EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_BACKEND = 'backend.email.EmailBackend'
EMAIL_HOST = 'mail.info@mydomain.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'info@mydomain.com'
EMAIL_HOST_PASSWORD = 'mypassword'
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = 'Mydomain <info@mydomain.com>'
файлbackend.email: (Я создал файл email_backend.py, чтобы избежать ошибки "[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain". Я нашел код здесь
import ssl
from django.core.mail.backends.smtp import EmailBackend as SMTPBackend
from django.utils.functional import cached_property
class EmailBackend(SMTPBackend):
@cached_property
def ssl_context(self):
if self.ssl_certfile or self.ssl_keyfile:
ssl_context = ssl.SSLContext(protocol=ssl.PROTOCOL_TLS_CLIENT)
ssl_context.load_cert_chain(self.ssl_certfile, self.ssl_keyfile)
return ssl_context
else:
ssl_context = ssl.create_default_context()
ssl_context.check_hostname = False
ssl_context.verify_mode = ssl.CERT_NONE
return ssl_context
И, наконец, вот мой views.py:
from django.shortcuts import render
from portfolio.models import Portfolio
from services.models import Service
from .forms import ContactFormForm
from django.core.mail import send_mail
from django.contrib import messages
from django.urls import reverse_lazy
from avaweb.settings import DEFAULT_FROM_EMAIL
def contact(request):
if request.method == 'POST':
form = ContactFormForm(request.POST)
if form.is_valid():
form.save()
subject = f'New Form Filled:: {form.cleaned_data["subject"]}'
message = 'New Form Filled:. Details down below:\n\n' + \
f'Username: {form.cleaned_data["name"]}\n' + \
f'Service: {form.cleaned_data["subject"]}\n' + \
f'How Many Workers: {form.cleaned_data["workers"]}\n' + \
f'Users Mail: {form.cleaned_data["email"]}\n' + \
f'Phone: {form.cleaned_data["phone"]}\n' + \
f'When to call?: {form.cleaned_data["call_time"]}\n' + \
f'Message: {form.cleaned_data["message"]}\n'
send_mail(subject,
message,
DEFAULT_FROM_EMAIL,
['mygmail@gmail.com'],
fail_silently=False
)
messages.success(request, 'Thank you!')
else:
form = ContactFormForm()
return render(request, 'contact.html', {'form': form,})
Редактирование: Я использую cPanel для моего info@mydomain.com