1

我正在开发一个 Web 应用程序。用户将创建将发送给另一个人的电子邮件。

我希望从我的系统上的用户名和用户的电子邮件地址中显示发送的电子邮件。如果他们回复电子邮件,那么它应该直接发送到发件人的电子邮件地址。

但是,我担心电子邮件看起来像垃圾邮件到电子邮件过滤器。

有没有合适的方法来做到这一点?

我注意到在 WordPress 博客的“联系”页面上做了一些非常相似的事情。电子邮件标题如下所示:

To: email@domain.com
Subject: [Test Blog] =?UTF-8?B?aGVsbA==?=
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
From:=?UTF-8?B?aGVsbA==?=<sender@senderdomain.com>
Message-Id: <20090207234737.39C9522802F3@web7.sat.wordpress.com>
Date: Sat,  7 Feb 2009 23:47:37 +0000 (UTC)
Return-Path: donotreply@wordpress.com

有趣的是,“from”标签中的显示名称和显示在主题行中的名称是经过编码的。我不知道这是否有助于垃圾邮件过滤器,但认为至少值得一提。

此外,在此示例中谁会收到无法送达的通知?它会发送到 sender@senderdomain.com 还是发送到 donotreply@wordpress.com?

4

6 回答 6

2

基本上,您需要做的就是将From标题设置为发送电子邮件的用户的电子邮件地址。的值From是在收件人的电子邮件客户端中显示的内容。目前大多数垃圾邮件检测系统只查看邮件内容,而不是电子邮件标头,因此根据您将 From 标头设置为的内容,您目前不会遇到那么多问题。

但是,有些系统越来越受欢迎,它们可能会阻止您使用其他人的电子邮件地址发送电子邮件 - 最值得注意的是 SPF,发件人策略框架基本上,实现 SPF 的邮件服务器将检查From每封电子邮件地址的域接收并直接与该域检查以查看它是否授权该电子邮件。例如,如果您的服务器是mydomain.com,则用户的电子邮件地址是abcdef@gmail.com,收件人是blah@example.com

  1. mydomain.com联系人example.com通过 SMTP 尝试发送电子邮件
  2. example.com查找 SPF 记录gmail.com
  3. example.com检查是否mydomain.com在允许使用该域发送电子邮件的域列表中gmail.com
  4. 如果不是,则电子邮件被阻止

此外,我发现一个论坛帖子表明这Return-Path是无法送达通知的预期目的地。显然,该标头是根据 SMTP MAIL FROM 命令的值设置的。

于 2009-02-08T00:58:45.543 回答
0

设置电子邮件字段通常很简单,但这样做的确切方法取决于您使用的语言和框架,您没有提及。通常是创建一个新的电子邮件对象,然后按照以下方式做一些事情:

email.from = "From Name <fromemailaddress@example.com>";

您可以将特定的发件人地址设置为用户的地址,如果您愿意,尽管我个人不是粉丝,但这并不罕见。您还可以将 from 字段设置为:“发件人名称(通过您的站点名称)<yourresponseaddress@example.com>”。

于 2009-02-08T01:00:05.553 回答
0

不要这样做。

这实际上取决于您的邮件中继是如何设置的,但实际上只是不要这样做。发件人应包含发送电子邮件的电子邮件地址,在您的情况下为 webmaster@whatever.com。如果您希望人们回复不同的地址,您始终可以使用回复标题。这里有一些注意事项。

于 2009-02-08T01:00:34.930 回答
0

如果我正确理解标准(RFC 822),这正是Sender标头的用途(请参阅 §4.4.2. SENDER / RESENT-SENDER)。不过,我会采用不同的方法,在From标头中使用您网站的官方联系地址,并将用户的地址放在Reply-To标头中。也许添加一些样板文本,清楚地说明邮件来自哪里。

除了技术方面的建议之外,还有一个建议:不要让匿名用户使用这个工具,你会成为一个完美的垃圾邮件平台。此外,出于善意,您可能希望确保您的(注册)用户知道他们的电子邮件地址已暴露给收件人。

于 2009-02-08T02:00:35.573 回答
0

请注意,这样做会使垃圾邮件过滤器更加怀疑您的电子邮件。结合可疑的内容,您的电子邮件可能会被过滤。

于 2009-02-08T02:05:01.803 回答
0

“发件人”标头中的任何人都将收到无法投递的通知。

对于过滤 - 它实际上更多地取决于您的邮件的主题和正文,而不是发件人地址。话虽如此,一些想法......

  1. 使用 HTML 编码而不是具有简单格式的纯文本(我知道可能存在相反的论点,但根据我的个人经验,HTML 更频繁地通过)
  2. 始终在页脚中添加(“这封电子邮件是从……等等等等发送给您的”)以识别它;如果您不希望人们知道它来自您的系统(即真正模仿“来自”用户),那么您需要找到一种更合法的方式来满足要求。
  3. 如果可能,请使用系统中的真实地址作为“发件人”地址,并将用户地址作为“回复”。
于 2009-02-08T02:22:12.473 回答