1

我目前正在尝试使用 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,它都不会抛出异常,但是如果我输入任何其他地址,它将失败。

提前感谢您的帮助!

4

2 回答 2

2

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

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

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

展开组织名称对象,然后展开服务器节点。展开要控制邮件中继的服务器的 server_name 对象,然后展开 Protocols 节点。

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

单击中继。

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

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

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

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

于 2013-04-01T15:31:50.950 回答
1

我遇到的问题是,即使是域管理员也无权访问 SMTP 中继。我必须确保用户在 SMTP 中继中经过身份验证。不管验证用户与使用的电子邮件地址是否相同,该用户都没有访问权限。一旦更正,它就可以毫无问题地发送。

于 2013-04-02T15:50:12.880 回答