【问题标题】:How to add custom headers to the System.Net.Mail SMTP class?如何将自定义标头添加到 System.Net.Mail SMTP 类?
【发布时间】:2017-11-03 16:02:38
【问题描述】:

我有一个 SMTP 服务器,它只接受预定义的发件人。
但是,我可以在 DATA 结构中添加一个自定义的 from 标头来设置另一个 from (sender) 地址。如果我测试使用 Telnet 撰写电子邮件,这是可能的:

>helo there
>mail from:the.only.allowed.sender@mydomain.com
>rcpt to:magnus@mydomain.com
>data
From:magnus@mydomain.com
To:some.user@mydomain.com
Subject:Test
Test message
.

当这封电子邮件到达收件人时,发件人地址是 magnus@mydomain.com,这就是目标。
这是我的问题。

如何在 System.Net.Mail SMTP 类中模仿这个“来自标头”? 设置 from 属性失败,因为这会违反 SMTP 服务器策略。 像这样的东西会很棒,但它不起作用:

var fromAddress = new MailAddress("the.only.allowed.sender@mydomain.com");
var toAddress = new MailAddress("user@mydomain.com");
string subject = "Subject";
string body = "Body";

var smtp = new SmtpClient
{
  Host = "my-smtp-server",
  Port = 25,
  DeliveryMethod = SmtpDeliveryMethod.Network
};

using (var message = new MailMessage(fromAddress, toAddress)
{
  Subject = subject,
  Body = body,
  ReplyTo = new MailAddress("magnus@mydomain.com"),

})
{
  message.Headers.Add("From", "magnus@mydomain.com"); // <---- This would be great, if it worked
  smtp.Send(message);
}

有人有什么想法吗?

PS。自己编写一个自定义的 SMTP 类,使用 TCP 套接字,它可以工作,但是这可以在标准的 .NET 类中完成吗?

【问题讨论】:

    标签: c# smtp header


    【解决方案1】:

    好吧,我应该在发布问题之前做一些实验......
    (但不是删除它,如果其他人有同样的问题,我会把它留在这里)。

    解决方案是在 MailMessage 对象上同时设置 From 和 Sender 属性。
    (我需要同时设置,否则不起作用):

    var message = new MailMessage(fromAddress, toAddress)
    {
      Subject = subject,
      Body = body,
      From = new MailAddress("magnus@mydomain.com"),
      Sender = new MailAddress("the.only.allowed.sender@mydomain.com")
    };
    
    smtp.Send(message);
    

    【讨论】:

    • 调用 smtp.Send 时,“消息”超出范围。语法完全错误,答案没有说明解决方案
    • @GregJF,欢迎来到 Stackoverflow。如果您认为有办法改进答案,可以提出修改建议。
    • Magnus,感谢您欢迎我加入 Stackoverflow:我加入 Stackoverflow 已有 6 年多了。我确实建议了一种改进您的答案的方法:更正您的语法!问题是关于标题的,但您在回答中没有提到它们。在语法方面,请在发布前尝试使用便笺簿检查您的代码。例如Linqpad
    猜你喜欢
    • 2010-12-07
    • 2016-10-18
    • 1970-01-01
    • 2012-04-23
    • 2012-04-02
    • 2019-08-17
    • 2017-02-15
    • 2016-11-14
    • 1970-01-01
    相关资源
    最近更新 更多