如何通过C#发送邮件时实现发件人ID?

时间:2010-03-04 09:36:01

标签: c# email bounce

我刚刚听到了Joel&杰夫在他们的83号播客中谈到了发件人身份证,我突然意识到这正是我正在努力的网站所需要的。

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

我为服务器准备了一张SPF记录,但这也差不多了。

因此,由于StackOverflow已经解决了这些问题,我认为发件人ID必须是最佳选择。

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

另外,我还需要设置DNS智能等等才能使其正常工作?

或者我在这里走错了轨道?

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

2 个答案:

答案 0 :(得分:4)

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

在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中)<​​/ p>

  

发件人:您的服务器代表发送用户
  致:某人

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

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

答案 1 :(得分:2)

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

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