我刚刚在他们的第 83 号播客中听到 Joel 和 Jeff 谈论发件人 ID,我突然想到这正是我正在开发的网站所需要的。
大约 90% 从服务器发送的所有电子邮件被退回或类似情况,可能是因为服务器未“验证”。
我有一个服务器的 SPF 记录,但仅此而已。
既然 StackOverflow 已经解决了这些问题,我想发件人 ID 一定是可行的方法。
据我从维基百科得知,它要求您在发送邮件时修改邮件 header - 我将如何从 C# 执行此操作?
此外,我还需要什么来设置 DNS 等才能使这项工作正常进行?
还是我走错了路?
编辑:我在 C# 中使用标准的 SmtpClient 类来发送邮件,我确实包含了邮件正文的纯文本和 HTML 版本。
最佳答案
如果您代表其他用户发送邮件并且希望邮件被接受,您可能需要执行以下操作:
在您的 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 验证工作所需的适当 header (假设服务器已将其设置为默认值,他们可以选择要验证的部分)。这将使电子邮件看起来像(在 Outlook 中)
From: Your Server on behalf of Sending User
To: To Someone
大多数 SPF 协议(protocol)将验证 Sender:
header 以确定发送域是允许还是拒绝它,因此无论您“从”谁发送它都需要来自您的域。
此外,您可能需要仔细检查您是否拥有 your SPF records set up right并且您的 IP 地址不在 blacklist 上比如垃圾邮件之家。检查调用的实际返回文本通常会告诉您为什么它被 5.something 错误阻止。
关于c# - C#发送邮件时如何实现Sender ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2378124/