Форма обратной связи, отправляющая электронные письма с одного и того же адреса электронной почты - Django - PullRequest
0 голосов
/ 18 января 2020

Итак, я создаю веб-страницу, состоящую из трех разделов, и один из этих разделов содержит контактную форму, позволяющую пользователям отправлять сообщения на мою электронную почту (EMAIL_HOST_USER в settings.py). Но send_mail(subject, message, email_from, [email_to,], fail_silently=False) использует только EMAIL_HOST_USER как для отправителя, так и для получателя, и отправляет электронное письмо с этого письма и на него. И я не могу понять, что мне здесь не хватает.

Вот код и спасибо заранее.

views.py

from django.shortcuts import render
from django.http import HttpResponse
from hajar.settings import EMAIL_HOST_USER
from django.core.mail import send_mail
from .forms import ContactForm 

def base_view(request):
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
            subject = "Hello"
            name   = form.cleaned_data['name']
            email_from =  form.cleaned_data['email']   
            email_to = EMAIL_HOST_USER   
            message= form.cleaned_data['message']
            send_mail(subject, message, email_from, [email_to,], fail_silently=False)
            return HttpResponse(f'Thank you for your message, {name}!')
    form = ContactForm()
    return render(request, 'base.html', {'form': form})

settings.py

EMAIL_HOST = 'smtp.gmail.com'
EMAIL_USE_TLS = True
EMAIL_PORT = 587
EMAIL_HOST_USER = 'myemail@gmail.com'
EMAIL_HOST_PASSWORD = 'mypassword'

forms.py

from django import forms

class ContactForm(forms.Form):
    name    = forms.CharField(max_length=100, widget=forms.TextInput(attrs={'class': 'mdl-textfield__input required', 'id':'name'}))
    email   = forms.EmailField(widget=forms.EmailInput(attrs={'class': 'mdl-textfield__input required', 'id':'email'}))
    message = forms.CharField(widget=forms.Textarea(attrs={'class':'mdl-textfield__input required', 'id':'textarea'}))

1 Ответ

1 голос
/ 18 января 2020

Вы должны использовать класс EmailMessage для отправки ответов на другие электронные письма.

email = EmailMessage(
    subject=subject,
    body=message,
    from_email=email_from,
    to=[email_to],
    reply_to=[email_from],
)

email.send()
...