Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
回复输入的电子邮件Django_Django_Django Views - Fatal编程技术网

回复输入的电子邮件Django

回复输入的电子邮件Django,django,django-views,Django,Django Views,我在我的网站和它的工作,但在我的电子邮件设置,我使用的是静态电子邮件和希望使用的电子邮件,而不是在电子邮件字段中键入的联系形式 从表单中获取的数据如下所示 {'from_email': 'example@gmail.com', 'subject': 'Hello World', 'message': 'asdasdasd'} class ContactMe(View): template = "contact.html" context = { 'form':

我在我的网站和它的工作,但在我的电子邮件设置,我使用的是静态电子邮件和希望使用的电子邮件,而不是在电子邮件字段中键入的联系形式

从表单中获取的数据如下所示

{'from_email': 'example@gmail.com', 'subject': 'Hello World', 'message': 'asdasdasd'}

class ContactMe(View):
    template = "contact.html"
    context = {
        'form': ContactForm()
    }

    def get(self, request):
        print("getting form")
        return render(request, self.template, self.context)

    def post(self, request):
        form = ContactForm(request.POST)

        def __init__(self):
            self.mailSender = mailSender()
            Mail = POST
            Mail.MailSender.send_mail()
        if form.is_valid():
            data = form.cleaned_data
            print(data)
            send_mail(data['subject'], data['message'],
                      settings.EMAIL_HOST_USER, data['from_email'])
     next = request.POST.get('next', '/')
            return HttpResponseRedirect(next)`

My view.py文件中的我的导入

from django.http import HttpResponse
from django.shortcuts import render
from django.views import View
from django.http import JsonResponse
from django.conf import settings
from django.core.mail import send_mail, BadHeaderError
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render, redirect
from .forms import ContactForm
from django.core.mail import EmailMessage

类视图如下所示

{'from_email': 'example@gmail.com', 'subject': 'Hello World', 'message': 'asdasdasd'}

class ContactMe(View):
    template = "contact.html"
    context = {
        'form': ContactForm()
    }

    def get(self, request):
        print("getting form")
        return render(request, self.template, self.context)

    def post(self, request):
        form = ContactForm(request.POST)

        def __init__(self):
            self.mailSender = mailSender()
            Mail = POST
            Mail.MailSender.send_mail()
        if form.is_valid():
            data = form.cleaned_data
            print(data)
            send_mail(data['subject'], data['message'],
                      settings.EMAIL_HOST_USER, data['from_email'])
     next = request.POST.get('next', '/')
            return HttpResponseRedirect(next)`

数据['from_email']已设置为我的电子邮件['example@gmail.com“]我将它更改为它获取的数据中的标签名('from_email')

它100%适用于静态电子邮件而不是可变形式的电子邮件,但使用形式的电子邮件会产生错误

TypeError:“to”参数必须是列表或元组

然后我把它改成了

to=['from_email']
但是我得到了一个错误TypeError:send_mail()得到了一个意外的关键字参数“to”

这样做的原因是我希望此人的电子邮件与我的电子邮件主题和信息,以便我可以直接从我的收件箱回复

有什么想法吗


亲切问候,

您不能通过尝试将电子邮件的“发件人”地址设置为
数据['from'email']
来伪造电子邮件的“发件人”地址,这是大多数SMTP提供商所不允许的(他们将用真正的“发件人”替换)。但是您可以设置“回复”地址(该地址将显示在您的电子邮件客户端中,并允许快速回复到正确的地址)

为此,不要使用
send\u mail()
,而是创建
EmailMessage
emailmultialternations
,将
回复设置为地址并
send()
发送:

from django.core.mail import EmailMultiAlternatives

message = EmailMultiAlternatives(
    data['subject'], 
    data['message'], 
    to=["support@example.com"],  # where you receive the contact emails  
    from_email=settings.EMAIL_HOST_USER,
    reply_to=[data['from_email']])
message.send()

无法通过尝试将电子邮件的“发件人”地址设置为
数据['from_email']
,这是大多数SMTP提供商不允许的(他们将用真正的“发件人”替换回)。但是您可以设置“回复”地址(该地址将显示在您的电子邮件客户端中,并允许快速回复到正确的地址)

为此,不要使用
send\u mail()
,而是创建
EmailMessage
emailmultialternations
,将
回复设置为地址并
send()
发送:

from django.core.mail import EmailMultiAlternatives

message = EmailMultiAlternatives(
    data['subject'], 
    data['message'], 
    to=["support@example.com"],  # where you receive the contact emails  
    from_email=settings.EMAIL_HOST_USER,
    reply_to=[data['from_email']])
message.send()

创建
EmailMessage
EmailMultiAlternations
并将
reply\u设置为
参数,而不是
from
参数。然后
.send()
它(所以不要使用
发送邮件
)。您不能伪造电子邮件的发件人地址,大多数SMTP提供商都不允许。请创建
EmailMessage
EmailMultiAlternations
并将
reply_设置为
参数,而不是
from
参数。然后
.send()
它(所以不要使用
发送邮件
)。你不能伪造电子邮件的发件人地址,大多数SMTP提供商都不允许。我没有伪造我刚才键入的电子邮件example@gmail.com这里不是我的实际电子邮件地址,我不希望它出现在帖子中。这不是我的意思。当您尝试将“发件人”地址设置为除设置.EMAIL\u HOST\u USER
(这是您发送电子邮件的真实电子邮件地址)以外的任何其他地址时,您是在伪造发件人地址。您希望它是填写联系人表单的人的电子邮件地址(
data['from_email']
),根据定义,它不是您的电子邮件地址。这无法完成。很抱歉误读了您的回复,我已删除了send_mail()部分,将其替换为EmailMessage部分,但我仍然对此有问题。问题是什么?没错,to和reply_需要是列表或元组,现在修复了。我没有伪造我刚刚键入的电子邮件example@gmail.com这里不是我的实际电子邮件地址,我不希望它出现在帖子中。这不是我的意思。当您尝试将“发件人”地址设置为除设置.EMAIL\u HOST\u USER
(这是您发送电子邮件的真实电子邮件地址)以外的任何其他地址时,您是在伪造发件人地址。您希望它是填写联系人表单的人的电子邮件地址(
data['from_email']
),根据定义,它不是您的电子邮件地址。这无法完成。很抱歉误读了您的回复,我已删除了send_mail()部分,将其替换为EmailMessage部分,但我仍然对此有问题。问题是什么?没错,to和reply_需要是列表或元组,现在已修复。