{'[email protected]': (553, b'5.7.1 <[email protected]>: 发件人地址被拒绝:不归用户所有 [email protected]')}

{'[email protected]': (553, b'5.7.1 <[email protected]>: Sender address rejected: not owned by user [email protected]')}

提问人:Patrick 提问时间:10/22/2023 更新时间:10/22/2023 访问量:40

问:

我在我的网站上有一个联系表格,用户在其中填写他们的姓名、电子邮件和消息以联系支持人员,在这种情况下是并说发件人的电子邮件是 .当用户提交表单时,表单将产生错误[email protected][email protected]{'[email protected]': (553, b'5.7.1 <[email protected]>: Sender address rejected: not owned by user [email protected]')}

如果发件人的电子邮件属于组织,则表单有效。用户是否可以通过在线表单发送电子邮件(使用不同的组织电子邮件,例如 Gmail)?[email protected]

这是我 forms.py

class ContactForm(forms.Form):
    name = forms.CharField(label='Your name', max_length=100)
    email = forms.EmailField(label='Your email', max_length=100) 
    message = forms.CharField(max_length=600, widget=forms.Textarea)
    
    def send_mail(self):
        logger.info("Sending email to customer service")
        subject = "Site message"
        message = f"From: {self.cleaned_data['name']} <{self.cleaned_data['email']}>\n{self.cleaned_data['message']}"
        sender_email = self.cleaned_data['email']  # Use the user's email as the sender
        recipient_list = ['[email protected]']  # My domain email address
        send_mail(
            subject,
            message,
            sender_email,
            recipient_list,
            fail_silently=False,
    )
python django 电子邮件 django-forms

评论

0赞 willeM_ Van Onsem 10/22/2023
您不能将其用作 ,否则您正在以其他人的名义发送电子邮件,一些电子邮件服务器会阻止这种情况。sender_email
0赞 willeM_ Van Onsem 10/22/2023
一个想法可能是将其作为 .reply-to

答:

0赞 willeM_ Van Onsem 10/22/2023 #1

正如错误所示,您不能使用gmail电子邮件后端代表其他人发送电子邮件。事实上,有关从不同地址或别名发送电子邮件的文档说:

如果您拥有其他电子邮件地址,则可以使用该地址发送邮件。

但是,即使某些电子邮件服务允许这样做,如果域不同,也很容易看出这是电子邮件的欺骗:发件人地址不属于发起通信的服务器。

您通常会添加对地址的回复,以便于回复填写表单的人,并附上:

from django.core.mail import EmailMessage

subject = 'Site message'
message = f"From: {self.cleaned_data['name']} <{self.cleaned_data['email']}>\n{self.cleaned_data['message']}"
sender_email = self.cleaned_data['email']
recipient_list = ['[email protected]']
email = EmailMessage(subject, message, to=recipient_list, reply_to=[sender_email])
email.send()

您也可以在 CC/BCC 中添加。sender_email