“SmtpFailedRecipientException:邮箱不可用”当邮箱可用时

发布于 2024-12-11 23:44:09 字数 1262 浏览 0 评论 0原文

当我尝试将电子邮件发送到代码中的特定地址时,出现此错误:

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);
    }
}

I get this error when I try to send an e-mail to a specific address in my code:

System.Net.Mail.SmtpFailedRecipientException: Mailbox unavailable. The server response was: Unknown user

The code sends an e-mail to two email addresses, mine and my colleague's. The e-mail sends to me just fine, but I get that error when it tries to send the email to him.

I looked around, and basically the common explanation for this error is that the email address is invalid, or their mailbox is full and isn't allowed to receive mail, or there is some setting on the server that is restricting it from receiving an e-mail.

But the email address is able to receive email, I'm corresponding back and forth through e-mail with him right now.

Is there any other reason why this error might occur?

EDIT:

Here's the code, maybe someone can spot an issue. I checked the parameters being passed, all the data is correct:

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);
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

捎一片雪花 2024-12-18 23:44:09

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

例如,为了防止垃圾邮件,服务器仅接受来自静态发件人 IP 的 smtp 和/或根据 MX 记录 (DNS) 等检查发件人 IP。

Assuming your SMTP settings are correct this is most probably a case of a server-side restriction...

For example to prevent spam the server only accepts smtp from static sender IP and/or is checking sender IP against MX records (DNS) etc.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文