6

我刚刚听到 Joel & Jeff 在他们的 83 号播客中谈到 Sender ID,我突然想到这正是我正在开发的网站所需要的。

从服务器发送的所有电子邮件中约有 90% 被退回或类似情况,可能是因为服务器未“验证”。

我有一个服务器的 SPF 记录,但也差不多。

因此,既然 StackOverflow 已经解决了这些问题,我想 Sender ID 一定是要走的路。

据我从维基百科得知,它要求您在发送邮件时修改邮件标题 - 我将如何从 C# 执行此操作?

另外,我需要设置 DNS 等以使其正常工作吗?

还是我在这里走错了路?

编辑:我使用 C# 中的标准 SmtpClient 类来发送邮件,并且我确实包含了邮件正文的纯文本和 HTML 版本。

4

2 回答 2

5

如果您代表其他用户发送邮件并且您希望它被接受,您可能需要执行以下操作:

在您的 MailMessage 对象中:

mail.To = new MailAddress("email@tosomeone.com", "To Someone");
mail.From = new MailAddress("sendinguser@fromsomeone.com", "Sending User");
mail.Sender = new MailAddress("serveraddress@your-domain-with-spf.com", "Your Server");
mail.ReplyTo = new MailAddress("sendinguser@fromsomeone.com", "Sending User");

这将生成 SPF 验证工作所需的适当标头(假设服务器已将其设置为默认值,他们可以选择要验证的部分)。这将使电子邮件看起来像(在 Outlook 中)

发件人:代表您的服务器 将用户发送
至:给某人

大多数 SPF 协议将验证Sender:标头以确定发送域是否允许或拒绝它,因此无论您“从”谁发送它,这都需要来自您的域。

此外,您可能需要仔细检查您的 SPF 记录是否设置正确,并且您的 IP 地址不在垃圾邮件之类的黑名单上。检查调用的实际返回文本通常会告诉您为什么它被 5.something 错误阻止。

于 2010-03-04T23:20:28.917 回答
2

我不明白为什么您需要对发件人 ID/SPF 进行任何标头更改。有了您的记录,您只需要确保您的外发邮件来自:在 DNS 的 SPF 记录中具有匹配的已发布发送(公共)IP 的域。

但是,我认为您可以检查 MailMessage.Headers 以查看正在发送哪些标头(或向您自己发送消息),以便根据您的 SPF 记录类型确定接收邮件服务器将如何计算域以匹配您的 SPF 记录.

于 2010-03-04T23:03:06.737 回答