请问各位:
    用户为域内用户,SmtpServer为一台Exchange Server2000(在同一个域内),采用的是nt authoritation的认证方式(域用户身份认证,发送邮件不需要额外的身份认证,只要是域用户就可以发送),用Outlook 发送邮件没有问题。我实验了.net下的WebMail类,CDO以及SOcket发送邮件,可以发送内部邮件,但是发送域外的用户却总是失败,提示为"550要求的邮件操作未完成,邮箱不可用(例
>如,邮箱未找到,或不可访问) 收件人地址有误",请问是什么原因,如何解决?谢谢!

解决方案 »

  1.   

    部分发送邮件的代码如下(Socket代码):
    string strSmtpServer = ConfigurationSettings.AppSettings["SmtpServer"];     //get the smtp server to email from Web.config
    string strMailFrom = ConfigurationSettings.AppSettings["MailFrom"];     //get MailFrom from Web.config
    string strMailSubject = ConfigurationSettings.AppSettings["MailSubjectToSupplier"];   //get MailSubject from web.config
    string strMailUserName = ConfigurationSettings.AppSettings["MailUserName"];     //get MailFrom from Web.config
    string strMailUserPassword = ConfigurationSettings.AppSettings["MailUserPassword"];   //get MailSubject from web.config
    string strMailTo = ConfigurationSettings.AppSettings["MailTo"];;
    string[] arrMailParameter = new string[7];
    string strMailBody = "Wraxall";
    arrMailParameter[0] = strSmtpServer;
    arrMailParameter[1] = strMailFrom;
    arrMailParameter[3] = strMailSubject;
    arrMailParameter[4] = strMailBody;
    arrMailParameter[5] = strMailUserName;
    arrMailParameter[6] = strMailUserPassword; int iTemp = Convert.ToInt32(ConfigurationSettings.AppSettings["MailMethod"]);
    // ArrayList arrlsManufactures = objPOrderBLL.GetManufacturesByPOrder(objPOrder);   //get Manufactures of company by POrder
    // for (int i = 0; i < arrlsManufactures.Count; i++)
    // {
    // strMailTo = ((Company)arrlsManufactures[i]).Email;
    arrMailParameter[2] = strMailTo;
    // switch  (iTemp)
    // {
    // case 1:    //use CDO
    // sendMailByCDO1(arrMailParameter);   //send email to every Company
    // break;   
    // case 2:    //use smtp
    // sendMailBySmtp(arrMailParameter);      
    // break;
    // case 3:    //use smtp new
    // sendMailBySmtpNew(arrMailParameter);
    // break;
    // case 4:    //use Email class
    Email objEmail = new Email();
    objEmail.MailDomainPort = 25;
    objEmail.MailServerUserName = strMailUserName;
    objEmail.MailServerPassWord = strMailUserPassword;
    objEmail.RecipientMaxNum = 5;
    objEmail.MailDomain = strSmtpServer;
    objEmail.RecipientName = strMailTo;
    // objEmail.
    bool bSend = objEmail.Send(strSmtpServer, strMailFrom, "", strMailTo, strMailTo, false, strMailSubject, strMailBody);
    if (bSend)
    {
    this.lblErrorMessage.Visible = true;
    this.lblErrorMessage.Text = objEmail.ErrorMessage;
    }
    else
    {
    this.lblErrorMessage.Visible = true;
    this.lblErrorMessage.Text = objEmail.ErrorMessage;
    }