Почему письмо не отправляется в другую почту с созданным объектом?
Моя идея заключается в том, что когда кто-то отправляет форму и созданный объект и мой email, проверенный в настройках с моим паролем приложения, отправляет письмо на мой другой рабочий email.
Мой сценарий таков: Сценарий: У Омара Хаджи есть личный веб-сайт с формой «Свяжитесь со мной». Посетительница по имени Сара заходит на сайт и хочет связаться с ним. Она заполняет форму следующей информацией:
Имя: Сара Алами Email: sarah@example.com Тема: Запрос о сотрудничестве Сообщение: «Привет, Омар, я наткнулась на ваше портфолио и заинтересована в сотрудничестве по проекту веб-разработки. Давай свяжемся!» Когда Сара нажимает кнопку «Отправить сообщение», за кулисами происходит следующее:
Что происходит шаг за шагом: Отправка формы:
Информация о Саре (имя, email, тема и сообщение) отправляется в представление контактов в вашем проекте Django. Сохранение заявки:
Представление Contact создает новый экземпляр модели ContactSubmission, используя данные, предоставленные Сарой. Этот экземпляр сохраняется в базе данных вместе с информацией, которую она предоставила. Отправка электронного письма:
Сразу после сохранения данных формы представление использует функцию Django send_mail, чтобы отправить письмо с электронной почты, указанной в настройках, на эту почту myworkemail@gmail.com с объектом sarah
Вот моя часть, связанная с настройками
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 465 # SSL port
EMAIL_USE_SSL = True
EMAIL_HOST_USER = 'myverifiedemail@gmail.com'
EMAIL_HOST_PASSWORD = 'my_app_pass'
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
Вот моя часть, связанная с моделью
class ContactSubmission(models.Model):
name = models.CharField(max_length=255)
email = models.EmailField()
subject = models.CharField(max_length=255)
message = models.TextField()
submitted_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f"Message from {self.name} - {self.email}"
Вот часть, связанная с видом
def contact(request):
banner = get_object_or_404(Banner, page='contact')
if request.method == 'POST':
name = request.POST.get('name')
email = request.POST.get('email')
subject = request.POST.get('subject')
message = request.POST.get('message')
submission = ContactSubmission.objects.create(
name=name,
email=email,
subject=subject,
message=message
)
try:
send_mail(
subject=f"New Contact Submission from {name}",
message=f"Name: {name}\nEmail: {email}\nSubject: {subject}\nMessage: {message}",
from_email=settings.DEFAULT_FROM_EMAIL,
recipient_list=['myworkemail.com'],
fail_silently=False,
)
messages.success(request, "Your message has been submitted successfully!")
except Exception as e:
messages.error(request, f"An error occurred while sending the email: {str(e)}")
return redirect('contact')
return render(request, 'pages/contact.html', {'banner': banner})
Вот блок содержимого
{% block content %}
<div class="container my-5">
<h2 class="text-center mb-4 text-white">Contact Me</h2>
<form id="contact-form" method="post" action="{% url 'contact' %}">
{% csrf_token %}
<div class="mb-3">
<label for="name" class="form-label text-white">Name</label>
<input type="text" class="form-control" id="name" name="name" placeholder="Your Name" required style="background-color: orange">
</div>
<div class="mb-3">
<label for="email" class="form-label text-white">Email address</label>
<input type="email" class="form-control" id="email" name="email" placeholder="Your Email" required style="background-color: orange">
</div>
<div class="mb-3">
<label for="subject" class="form-label text-white">Subject</label>
<input type="text" class="form-control" id="subject" name="subject" placeholder="Subject" required style="background-color: orange">
</div>
<div class="mb-3">
<label for="message" class="form-label text-white">Message</label>
<textarea class="form-control" id="message" name="message" rows="5" placeholder="Your Message" required style="background-color: orange"></textarea>
</div>
<button type="submit" class="hire-me-btn rounded">Send Message</button>
</form>
</div>
{% endblock content %}