信箱不可用.服务器响应是:不允许中继

Pat*_*per 3 c# asp.net email smtp

我通过外部SMTP服务器发送电子邮件.使用以下代码处理发送电子邮件:

try
    {
        System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
        mail.From = new MailAddress(froma);
        mail.To.Add(toc);
        mail.Subject = subject;
        mail.IsBodyHtml = true;
        mail.Body = body;
        SmtpClient smtp = new SmtpClient(ClientServer);
        DataSet ds = new DataSet();
        int retCode = Email.getSmtp(ref ds, DatabaseName);
        string User="";
        string Password="";

        if (ds.Tables["Value"].Rows.Count > 0)
        {
            User = ds.Tables["Value"].Rows[0]["UserName"].ToString();
            Password = ds.Tables["Value"].Rows[0]["PasswordName"].ToString();
        }
        else
        {
            MessageBox.Show("Invalid SMTP settings!");
            return;
        }

        smtp.UseDefaultCredentials = false;
        smtp.Credentials = new System.Net.NetworkCredential(User, Password);
        smtp.EnableSsl = false;
        smtp.Send(mail);
    }
    catch (System.Web.HttpException exHttp)
    {
        System.Console.WriteLine("Exception occurred:" + exHttp.Message);
    }
Run Code Online (Sandbox Code Playgroud)

在我的服务器上测试此代码,在同一网络上使用我自己的SMTP服务器,这将返回我的所有电子邮件.但是,使用外部SMTP服务器会导致错误:

Mailbox unavailable. The server response was: relay not permitted.
Run Code Online (Sandbox Code Playgroud)

我已经阅读过,看来SMTP的管理员必须允许我的服务器的中继.但是,使用提供的身份验证凭据,我似乎无法连接,并仍然收到中继错误.

A G*_*zal 6

我有同样的错误并注释掉:

//smtp.UseDefaultCredentials = true;
Run Code Online (Sandbox Code Playgroud)

并且邮件发送成功。


Hum*_*mpy 5

是的,这听起来像您正在使用的外部服务器不允许中继.即使您拥有正确的身份验证凭据,也无法发送电子邮件,因为仍然禁用了中继功能.你是这个外部服务器的管理员吗?如果您是,那么您可以启用它.此LINK HERE解释了如何设置SMTP和中继.如果您不是此外部服务器的管理员,那么您必须联系谁,以便他们可以为您启用SMTP和中继.

听起来网络上的服务器已经安装了SMTP,并且因为您可以发送,所以继电器设置正确.我必须在这里安装SMTP并在所有三个服务器上配置中继(开发框,登台框和生产框)以发送电子邮件.我希望这个信息帮助.