我有一个简单的邮件实用程序,应该通过Exchange 2007服务器(安装在Windows Server 2008 R2 64位上)发送电子邮件,但它不起作用,在命令行上显示以下错误消息: “邮箱不可用。服务器响应是:5.7.1无法中继”。 我被告知我需要对服务器进行身份验证,但显然我没有正确执行。有什么建议? 我的代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Mail;
namespace SendMail
{
class Program
{
static void Main(string[] args)
{
SmtpClient smtpClient = new SmtpClient("x.x.x.x", 25);
NetworkCredential basicCredential = new NetworkCredential("username", "password", "domain");
MailMessage message = new MailMessage();
MailAddress fromAddress = new MailAddress("user@domain.com");
smtpClient.Host = "x.x.x.x";
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = basicCredential;
message.From = fromAddress;
message.Subject = "test message";
message.Body = "test message";
message.To.Add("user@domain.com");
try
{
smtpClient.Send(message);
Console.WriteLine("Message sent successfully");
}
catch (Exception ex)
{
//Error, could not send the message
Console.WriteLine(ex.Message);
}
}
}
}
答案 0 :(得分:0)
我测试过,你的代码运行正常。请检查您使用的帐户是否在Exchange中正确配置,或尝试使用其他帐户。
答案 1 :(得分:0)
除非您在Exchange服务器上创建允许开放中继的连接器,否则System.Net.Mail.SmtpClient将无法轻松地对Exchange进行身份验证。您可以将其限制为仅发送服务器的IP。但是,对于通过Exchange发送邮件,您会发现以下EWS dll是更好的通用解决方案。它与您的代码现在一样简单,但对Exchange更有效。
您可以使用以下DLL尝试Microsoft Exchange Web服务。
https://www.microsoft.com/en-us/download/details.aspx?id=42951
该对象非常简单,与使用System.Net.Mail相似。
以下是我从MSDN示例中修改的示例。
expect
EWS网址可能有点令人困惑。这还取决于您是否有权访问Exchange服务器。这是一些帮助。
https://msdn.microsoft.com/en-us/library/office/dn509511(v=exchg.150).aspx
如果您无法访问Exchange服务器,则会很有帮助。 http://nuanceimaging.custhelp.com/app/answers/detail/a_id/13098/~/determining-the-exchange-web-services-(ews)-url-for-the-sharescan-exchange
将最后一部分更改为Exchange.asmx,而不是Services.wsdl