C# Smtp.Send 不适用于特定的电子邮件地址

C# Smtp.Send not working for specific email address

除了一个用户的电子邮件地址 (每个人都有相同的“@OurCompany”域名)之外,我对这段代码没有任何问题。

我已经通过 Outlook 向他发送了一封电子邮件,一切顺利。当代码为 运行 时没有抛出异常,但我们的系统管理员说我尝试发送的电子邮件甚至没有发送到服务器。

public static void SendEmail(string sTo, string sSubject, string sBody)
{
    using (MailMessage message = new MailMessage(new MailAddress(ConfigurationManager.AppSettings["FromUser"], "User"), new MailAddress(sTo))
    {
        Subject = sSubject,
        Body = sBody
    })
    {
        using (var client = new SmtpClient(ConfigurationManager.AppSettings["SMTPGridName"]))
        {
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            client.Port = int.Parse(ConfigurationManager.AppSettings["SmtpPort"]);
            client.Credentials = new NetworkCredential(ConfigurationManager.AppSettings["EmailCredential"],
                ConfigurationManager.AppSettings["EmailPassword"]);
            client.EnableSsl = true;
            client.Send(message);
        }
    }
}

这里有一个简单的方法,可以让你省去很多麻烦

public static void SendEmail(string sTo, string subject, string body)
{
    var Port = int.Parse(ConfigurationManager.AppSettings["SmtpPort"]);
    using (var client = new SmtpClient(Your EmailHost, Port))
    using (var message = new MailMessage()
    {
        From = new MailAddress(FromEmail),
        Subject = subject,
        Body = body
    })
    {
        message.To.Add(sTo);
        client.DeliveryMethod = SmtpDeliveryMethod.Network;
        client.Credentials = new NetworkCredential(ConfigurationManager.AppSettings["EmailCredential"],
                ConfigurationManager.AppSettings["EmailPassword"]);
        client.EnableSsl = true;
        client.Send(message);
    };
}

事实证明,由于 "Bounced Address." 原因,电子邮件在到达我们的电子邮件服务器之前被 SendGrid 丢弃到 "does not exist" 列表。该地址已从列表中删除,现在可以使用了。

感谢您的建议