【问题标题】:Outlook SMTP ignores the ReplyToList on my MailMessageOutlook SMTP 忽略我的 MailMessage 上的 ReplyToList
【发布时间】:2015-05-04 00:27:47
【问题描述】:

我的网站上有一个联系表。 过去,我使用我的管理员 gmail 帐户(使用 gmail smtp)发送邮件。 现在我必须切换到在 Outlook 上创建的专业帐户。 问题是现在似乎不可能将另一个地址欺骗到回复标头中。如果我回复邮件,它总是会发送到“info@xxx.be”,而不是联系表格上填写的地址。

这是过去使用的代码。 有什么办法可以让这段代码再次工作?

try
{
    var message = new MailMessage();

    message.To.Add(new MailAddress("info@xxx.be"));
    message.From = new MailAddress(from);
    message.ReplyToList.Clear();
    message.ReplyToList.Add(new MailAddress(from));
    message.Subject = subject;
    message.Body = body;
    message.IsBodyHtml = true;

    var client = new SmtpClient("smtp-mail.outlook.com", 587)
    {
        EnableSsl = true,
        UseDefaultCredentials = false,
        Credentials = new NetworkCredential("info@xxx.be", "xxxxx")
    };
    client.Send(message);
}
catch (Exception e)
{
    return false;
}
return true;

【问题讨论】:

  • 你为什么将reply to设置为与from相同的值?
  • 因为我想让邮件看起来像是客户(使用表单)发送到公司地址 (info@xxx.be)。由于 From 很难欺骗,我还将它包含在 ReplyToList 中,所以如果我在邮件上按下回复,它至少会将其发送给客户而不是我自己的地址(因为那是用于 smtp 服务器的地址) .但这在将 outlook.com 用作 smtp 时似乎不起作用。回复总是指向 info@xxx.be。

标签: c# asp.net email smtp


【解决方案1】:

这里只使用一个字符串:

message.ReplyToList.Add(new MailAddress(from));

将上面的代码改为:

message.ReplyToList.Add(from);

MailAddressCollection.Add(...) 将字符串作为参数,而不是 MailMessage。这可能是它忽略它的原因。

https://msdn.microsoft.com/en-us/library/ms144695(v=vs.110).aspx

【讨论】:

  • 刚试了下,还是不行。两者都是正确的,并且在使用 gmail smtp 服务器时可以工作,但在使用 outlook.com 作为 smtp 时它不起作用。
  • outlook.com 可能会出于安全原因阻止此操作,以阻止垃圾邮件发送者滥用其服务。抱歉,我没有在 OP 中发现这个细节。
  • 这就是我的想法,但我找不到任何官方声明。这不应该在某处声明/指定吗?我很好奇 Office365 是否具有相同的行为。我不明白其他网站如何设法发送这些邮件...
猜你喜欢
  • 2011-07-19
  • 2017-07-02
  • 1970-01-01
  • 1970-01-01
  • 2014-06-18
  • 2023-03-12
  • 1970-01-01
  • 2019-03-17
  • 1970-01-01
相关资源
最近更新 更多