【问题标题】:How to implement Sender ID when sending mails through C#?通过C#发送邮件时如何实现Sender ID?
【发布时间】:2011-01-23 14:27:20
【问题描述】:

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

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

我为服务器设置了 SPF 记录,但仅此而已。

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

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

我还需要如何设置 DNS 等以使其正常工作?

或者我在这里走错了路?

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

【问题讨论】:

  • 您已将 spf 添加到域的 DNS 配置中?
  • 是的,该部分已按顺序排列 :-)

标签: c# email email-bounces


【解决方案1】:

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

在您的 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: 标头以确定发送域是允许还是拒绝它,因此无论您“从”谁发送它,它都需要来自您的域。

此外,您可能需要仔细检查您是否拥有your SPF records set up right,并且您的 IP 地址不在 blacklist 上,例如 spamhaus。检查调用的实际返回文本通常会告诉您为什么它会因 5.something 错误而被阻止。

【讨论】:

  • 我的代码中没有 Sender 部分,所以这可能会有所帮助。此外,我将检查您的 SPF 记录链接,并确保我做对了。谢谢:-)
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-05
    • 1970-01-01
    • 2018-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多