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

如何在通过C#发送邮件时实现发件人ID?,c#,email,bounce,C#,Email,Bounce,我刚刚听到Joel和Jeff在他们83号播客中谈到了发件人ID,我突然想到,这正是我正在开发的网站所需要的 大约90%的从服务器发送的电子邮件被退回或类似,可能是因为服务器未“验证” 我为服务器准备了一个SPF记录,但也差不多就是这样 既然StackOverflow已经解决了这些问题,我想发送者ID应该是解决的方法 据我从维基百科上所知,它要求你在发送邮件时修改邮件头——我如何从C#开始这样做 此外,我需要什么设置DNS智能等,使这项工作 还是我走错了路 编辑:我正在使用C#中的标准SmtpCl

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

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

我为服务器准备了一个SPF记录,但也差不多就是这样

既然StackOverflow已经解决了这些问题,我想发送者ID应该是解决的方法

据我从维基百科上所知,它要求你在发送邮件时修改邮件头——我如何从C#开始这样做

此外,我需要什么设置DNS智能等,使这项工作

还是我走错了路


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

我不明白为什么您需要对发件人ID/SPF进行任何标题更改。记录就绪后,您只需确保传出的消息来自以下域:在DNS中的SPF记录中具有匹配的已发布发送(公共)IP的域


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

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

在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协议都会验证
发送方:
头,以确定发送域是否允许它,因此无论您是从谁“发送”它,这都需要来自您的域


此外,您可能需要再次检查您是否拥有IP地址,以及您的IP地址是否不在spamhaus等服务器上。检查呼叫的实际返回文本通常会告诉您为什么它被5.something错误阻止。

您已将spf添加到域的DNS配置中?是的,按顺序获得该部分:-)我的代码中没有发送方部分,因此这可能会有所帮助。此外,我会检查你的SPF记录链接,并确保我有它的权利。谢谢:-)