Exchange 2003与C#smtpclient

时间:2013-04-01 15:25:40

标签: c# smtp exchange-server-2003

我目前正在尝试使用SmtpClient向Exchange 2003发送电子邮件。使用下面的代码它不会发送电子邮件,但它不会抛出异常,我认为这意味着它正在与Exchange服务器建立连接,因为。另外对于服务器设置我尝试了mail.server.com以及IP地址,它仍然没有抛出异常。

        public static void emailTest()
    {
        string fromEmail = @"me@me.com";
        string ToEmail = @"me@me.com";          
        string body = "C Stuck Batches"; 
        string subject = "C Stuck Batches"; 

        try
        {
            SmtpClient MyMail = new SmtpClient("x.x.x.x");
            MyMail.DeliveryMethod = SmtpDeliveryMethod.Network;
            MyMail.UseDefaultCredentials = false;
            MyMail.Credentials = new NetworkCredential(@"domain\user", "password"); 

            MyMail.Send(fromEmail, ToEmail, subject, body);
            MessageBox.Show("Sent", "SENT", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
        }
        catch (Exception ex)
        {
            MessageBox.Show("Exception", "Exception", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
        } 
    }

我已经阅读了其他几个问题,但据我所知,其他大多数人都遇到了某种异常或超时。由于这似乎连接,我不知道是什么问题。如果它无法访问服务器,它会抛出异常吗?如果我将不同的IP丢入服务器,它将抛出异常。

此外,我已经尝试了服务器的IP和mail.xx.com,并且它不会抛出异常,但如果我放置任何其他地址,它将失败。

提前感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

您的Exchange服务器是否设置为从您的IP地址中继邮件?如果不是,可以“静默”丢弃邮件而不抛出异常(客户端正确连接,这是丢弃电子邮件的后端)

This link提供了有关如何在Exchange 2003上配置中继的更多信息(我假设“eSupport”等同于此示例中的应用程序,即运行代码的计算机的IP)。

  

登录到Exchange 2003服务器(上例中为192.168.5.25)并启动Exchange系统管理器。

     

展开organization_name对象,然后展开“服务器”节点。展开要控制邮件中继的服务器的server_name对象,然后展开“协议”节点。

     

展开SMTP节点,右键单击要控制邮件中继的虚拟SMTP服务器,然后单击“属性”

。      

点击接力。

     

在“中继限制”对话框中,有几个选项可用。默认情况下,仅启用以下列表选项;此选项下方的列表为空。

     

单击“添加”。输入运行eSupport的服务器的IP地址(在上面的示例中为192.168.5.80)。

     

在“中继限制”对话框中,单击“确定”。

     

单击“应用”,然后在“默认SMTP虚拟服务器属性”对话框中单击“确定”。

答案 1 :(得分:1)

我遇到的问题是即使域管理员也无法访问SMTP中继。我必须确保用户在SMTP中继中进行了身份验证。无论验证用户与使用的电子邮件地址相同,该用户都无权访问。一旦纠正,它就可以毫无问题地发送。