电子邮件:回复地址与发件地址不同

14

我在网站上有一个联系表单(一般表单:姓名、电子邮件、主题、消息),使用谷歌应用程序SMTP发送邮件给管理员。
目前,如果管理员想通过选择回复选项直接回复邮件,则答复人的To字段将自动填写发件人的地址。

我的问题是:是否有任何标准化的方法来传递一些附加信息,该信息将定义任何对邮件的回复都应发送到此地址而不是发件人的地址?

似乎存在这种可能性,但由于垃圾邮件发送者可能会定义其邮件中的自定义答复字段,普通用户可能无法确定他们正在回复哪个地址,因此可能会导致一些问题。

因此,作为替代方案,我的想法是找到一种方法来创建带有发件人帐户的过滤器,从格式中找出回复电子邮件地址并转发邮件(这似乎不是一个好的解决方案,我也不知道如何实现这一点)。

我已经标记了 Django,尽管这与 Django 没有直接关系,因为最终我将通过 Django 实现此功能。

4个回答

15

实际上,有标准化的头部来指定响应头:http://cr.yp.to/immhf/response.html.

就 Django 实现而言,文档中包含一个示例:

from django.core.mail import EmailMessage

email = EmailMessage(
    'Hello', # email subject
    'Body goes here', # email body
    'from@example.com', # sender address
    ['to1@example.com', 'to2@example.com'],
    ['bcc@example.com'],
    headers={'Reply-To': 'another@example.com'},
)

这解决了我的问题。


2
请注意,在Django 1.8中,EmailMessage对象新增了一个reply_to参数。 - mlissner

4

回复地址是标准的SMTP头。

目前我找不到一个好的参考资料,但在电子邮件的维基百科文章中提到了它。

编辑:找到了:RFC 5322,第3.6.2节。


感谢 @david,我在附录 A.2 中找到了对规格的回复;如果垃圾邮件发送者伪造回复邮件地址,这不会有点危险吗? - crodjer
1
仅伪造发件人地址,这是他们已经在做的事情。但据我所知,大多数垃圾邮件都是广告,不打算回复,因此我认为回复地址并不重要。 - David Yaw

2
RFC规定可以指定多个电子邮件地址,这正是我所需要的。我找到了以下代码:
from django.core.mail import EmailMessage
headers = {'Reply-To': 'email@one.com;email@two.com'}
msg = EmailMessage(subject, html_content, EMAIL_HOST_USER, email_list, headers=headers)
msg.content_subtype = "html"
msg.send()

非常好用。注意:根据Django文档电子邮件设置,EMAIL_HOST_USER是从您的设置文件中导入的。更多信息请查看此处,“reply-to”进行搜索:https://docs.djangoproject.com/en/dev/topics/email/


0

以下是如何使用回复地址(reply-to)的方法

from django.core.mail import EmailMessage

email = EmailMessage(
    'Hello',
    'Body goes here',
    'from@example.com',
    ['to1@example.com', 'to2@example.com'],
    ['bcc@example.com'],
    reply_to=['another@example.com'],
    headers={'Message-ID': 'foo'},
)

阅读更多请参见文档 docs.djangoproject


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接