Django smtp sendmail не работает для отправки почты
Я написал это в settings.py
DEFAULT_AUTO_FIELD = 'django.db.models.AutoField'
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'example@gmail.com'
EMAIL_HOST_PASSWORD = '*********'
forms.py
from django import forms
from django.conf import settings
from django.core.mail import send_mail
class Emailform(forms.Form):
name = forms.CharField(max_length=120)
email = forms.EmailField()
inquiry = forms.CharField(max_length=70)
message = forms.CharField(widget=forms.Textarea)
def get_info(self):
cd = super().clean()
name = cd.get('name').strip()
from_mail = cd.get('email')
subject = cd.get('inquiry')
msg = f'{name} with email {from_mail} said:'
msg += f'\n"{subject}"\n\n'
msg += cd.get('message')
return subject, msg
def send(self):
subject, msg = self.get_info()
send_mail(
subject=subject,
message=msg,
from_email=settings.EMAIL_HOST_USER,
fail_silently=False
)
views.py
from django.views.generic import FormView, TemplateView
from .forms import Emailform
from django.urls import reverse_lazy
from django.shortcuts import redirect
class EmailView(FormView):
template_name = 'index.html'
form_class = Emailform
success_url = reverse_lazy('mailapp:success')
def form_valid(self, request):
if request.method == 'POST':
form = Emailform(request.POST)
if form.is_valid():
form.send()
return redirect('mailapp:success')
else:
form = Emailform()
class EmailSuccessView(TemplateView):
template_name= 'success.html'
Мой код работает успешно, но я не получаю почту. Я даже пытался отредактировать функцию отправки, но и после этого она не работает. Я просто запутался. Может ли кто-нибудь сказать мне, почему у меня возникает эта проблема? Моя версия python - 3.10, а версия Django - 4.0.5. Спасибо заранее.