联系表单,用于在同一电子邮件之间发送电子邮件以及向同一电子邮件发送电子邮件-Django [英] Contact form sending emails from and to the same email -Django

查看:56
本文介绍了联系表单,用于在同一电子邮件之间发送电子邮件以及向同一电子邮件发送电子邮件-Django的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

因此,我正在构建一个由三部分组成的网页,其中一部分包含用于用户将邮件发送到我的电子邮件的联系表单( settings.py 中的 EMAIL_HOST_USER ).但是 send_mail(主题,消息,email_from,[email_to,],fail_silently = False)仅对发件人和收件人部分使用 EMAIL_HOST_USER ,并且它从并发送至该电子邮件.而且我无法弄清楚我在这里缺少什么.

So I am building a three-section webpage and one of these sections contains a contact form for users to send messages to my email (EMAIL_HOST_USER in settings.py). But send_mail(subject, message, email_from, [email_to,], fail_silently=False) is only using EMAIL_HOST_USER for both the sender and the recipient parts and it sends the email from and to that email. And I can't figure out what I am missing here.

这是代码,在此先感谢您.

Here's the code and thank you in advance.

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

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'}))

推荐答案

您应使用 EmailMessage 类向其他电子邮件发送回复.

You should use EmailMessage class for sending replies to other emails.

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

email.send()

这篇关于联系表单,用于在同一电子邮件之间发送电子邮件以及向同一电子邮件发送电子邮件-Django的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆