【问题标题】:System.Net.Mail.SmtpException: Mailbox unavailableSystem.Net.Mail.SmtpException:邮箱不可用
【发布时间】:2011-10-17 18:19:02
【问题描述】:
// CREATE NEW EMAIL OBJECT
ContactUs.Core.Email oEmail = new ContactUs.Core.Email();

// EMAIL SMTP SERVER INFORMATION
oEmail.SmtpServer = "Server";
oEmail.SetAuthentication("Email", "Password");

// EMAIL INFORMATION
oEmail.From = "contact@Server.com";
oEmail.To = "RecipientEmail";
oEmail.Subject = this.txtMessage.Text;
oEmail.Message = strMessage;

// SEND EMAIL
oEmail.HtmlFormat = true;
oEmail.Send();

这是我得到的错误。我知道认证是正确的。

System.Net.Mail.SmtpException: Mailbox unavailable. The server response was: 5.7.1 Client does not have permissions to send as this sender
at System.Net.Mail.MailCommand.CheckResponse(SmtpStatusCode statusCode, String response)
at System.Net.Mail.MailCommand.Send(SmtpConnection conn, Byte[] command, String from)
at System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection recipients, String deliveryNotify, SmtpFailedRecipientException& exception)
at System.Net.Mail.SmtpClient.Send(MailMessage message)
at ContactUs.Core.Email.Send()
at _Default.btnSend_Click(Object sender, EventArgs e)

【问题讨论】:

    标签: c# smtp exchange-server


    【解决方案1】:

    5.7.1 == 禁止中继

    您需要允许对经过身份验证的用户或来自 SMTP 服务器的一系列 IP 进行中继:http://support.microsoft.com/kb/304897

    您使用哪种服务器来中继消息?

    【讨论】:

    • MX 2007。我刚刚将收件人更改为内部域,现在我在应用程序中遇到服务器错误。
    • 什么是 MX 2007,谁制作的,链接到网站?您是否有能力更改该服务器上的设置?
    • 如果是 Exchange 2007,这里是允许中继 blogs.technet.com/b/exchange/archive/2006/12/28/3397620.aspx 的说明
    • 我使用的每封电子邮件都来自同一个域。为什么我需要打开中继?
    • 它仍在中继,即使您正在发送到您自己的域。这实际上是一个服务器配置问题,因为您可以很好地联系 SMTP 服务器,它只是给您一个无法中继的消息。我上面评论中的文章解释了允许中继所需的更改。尝试使用邮件客户端(如 Outlook 或 Thunderbird)使用此 SMTP 服务器发送邮件,您应该会收到相同的 5.7.1 错误。
    【解决方案2】:

    将网络凭据添加到您的代码中。

    示例邮件代码:

    private void SendMailViaGmailUsingCredentials()
            {
                try
                {
                    MailMessage mail = new MailMessage();
                    SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
    
                    mail.From = new MailAddress("your_email_address@gmail.com");
                    mail.To.Add("to_address@mfc.ae");
                    mail.Subject = "Test Mail";
                    mail.Body = "This is for testing SMTP mail from GMAIL";
    
                    SmtpServer.Port = 587;
                    SmtpServer.Credentials = new System.Net.NetworkCredential("username", "password");
                    SmtpServer.EnableSsl = true;
    
                    SmtpServer.Send(mail);
                    MessageBox.Show("mail Send");
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
    }
    

    【讨论】:

      【解决方案3】:

      您必须在 SMTP 身份验证中将用户名设置为 contact@Server.com

              // CREATE NEW EMAIL OBJECT
              ContactUs.Core.Email oEmail = new ContactUs.Core.Email();
      
              // EMAIL SMTP SERVER INFORMATION
              oEmail.SmtpServer = "Server";
              oEmail.SetAuthentication("contact@Server.com", "Password");
      
              // EMAIL INFORMATION
              oEmail.From = "contact@Server.com";
              oEmail.To = "RecipientEmail";
              oEmail.Subject = this.txtMessage.Text;
              oEmail.Message = strMessage;
      
              // SEND EMAIL
              oEmail.HtmlFormat = true;
              oEmail.Send();
      

      您的 SMTP 服务器不允许您设置不同于 oEmail.From(发件人的电子邮件地址)的凭据用户名。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-16
        • 1970-01-01
        • 1970-01-01
        • 2012-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多