c# - C#发送邮件时如何实现Sender ID?

标签 c# email email-bounces

我刚刚在他们的第 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/

相关文章:

c# - 如何在 C# 中正确使用 lambda 表达式的参数?

Ruby 电子邮件客户端推荐

c# - 换行符不会出现在 Notes 的邮件正文中

c# - C#中的基本线程

c# - 无法连接到数据库服务器

php - 我正在使用亚马逊 SES。如何使用 PHP 跟踪退回电子邮件?

email - Return-Path header 如何与实际的电子邮件退回收件人不同?

c# - 如何在 .net 3.5 中发送带有返回路径的电子邮件

c# - 在 IIS Express 停止后停止 npm 任务/脚本

email - 在 Jenkins 构建流程中以编程方式访问子构建