回复输入的电子邮件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_需要是列表或元组,现在已修复。