我目前正在尝试使用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,并且它不会抛出异常,但如果我放置任何其他地址,它将失败。
提前感谢任何帮助!
答案 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中继中进行了身份验证。无论验证用户与使用的电子邮件地址相同,该用户都无权访问。一旦纠正,它就可以毫无问题地发送。