当邮箱可用时出现"SmtpFailedRecipientException: 邮箱不可用"

7
当我在代码中尝试向特定地址发送电子邮件时,出现以下错误: System.Net.Mail.SmtpFailedRecipientException: 邮箱不可用。服务器响应为:未知用户。 我的代码向两个电子邮件地址发送电子邮件,一个是我的,另一个是我的同事的。邮件能够成功发送到我的邮箱,但在尝试发送邮件到同事的邮箱时,我收到了上述错误信息。 我查看了一些资料,通常情况下,这种错误的常见解释是电子邮件地址无效,或者该邮箱已满且不允许接收邮件,或者服务器上有某些限制,禁止接收电子邮件。 但该电子邮件地址可以接收邮件,因为我正在通过电子邮件与同事来往交流。 还有其他可能会导致这种错误出现的原因吗? 编辑: 下面是代码,请帮忙检测是否存在问题。我已经检查了传递的参数,所有数据都是正确的。
private static void SendEmail(IEnumerable<MailAddress> to, MailAddress from,
    string subject, string body, string bodyHtml)
{
    var mail = new MailMessage { From = from, Subject = subject };

    foreach (var address in to)
    {
        mail.To.Add(address);
    }

    mail.AlternateViews.Add(
        AlternateView.CreateAlternateViewFromString(bodyHtml, null, "text/html"));
    mail.AlternateViews.Add(
        AlternateView.CreateAlternateViewFromString(body, null, "text/plain"));

    try
    {                
        var smtp = new SmtpClient("localhost", 25)
            {
                Credentials = new NetworkCredential("xxx", "xxx")
            };

        smtp.Send(mail);
    }
    catch (Exception err)
    {
        Elmah.ErrorSignal.FromCurrentContext().Raise(err);
    }
}

你是否仔细检查了SMTP设置(无论是在web.config中还是在实例化System.Net.Mail对象时)以确保使用适当的服务器(例如不是本地主机)? - Brian Driscoll
@Steven,你的应用程序是在目标服务器上运行还是在本地机器上运行? - Brian Driscoll
也许这是一个愚蠢的问题,但你确认在程序中输入了正确的电子邮件地址吗?简单的打字错误可能是问题的原因... - Jim Mischel
@Jim - 不是傻瓜。我检查过了,地址是正确的。 - Steven
我在原帖中添加了代码,可能存在问题。 - Steven
显示剩余3条评论
1个回答

10

假设您的SMTP设置正确,这很可能是服务器端限制的情况...

例如,为了防止垃圾邮件,服务器仅接受静态发件人IP发送的SMTP,并/或者检查发件人IP是否与MX记录(DNS)匹配。


是的。如果服务器正在进行反向DNS查找,则可能会发生这种情况。尽管为什么它会发送到一个地址而不是另一个地址仍然令人困惑。 - Jim Mischel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接