4

我想在没有代码的情况下运行

NetworkCredential nc = new Net.NetworkCredential("USERNAME", "PASSWORD"). 

通过仅使用 Exchange 主机(服务器名称)和端口

我收到此代码错误:邮箱不可用。服务器响应为:5.7.1 客户端无权作为此发件人发送

protected void SendEmail(object sender, EventArgs e)
{
    SmtpClient smtpClient = new SmtpClient("ExchangeServerName",25);
    MailMessage message = new MailMessage();
    try
    {
        MailAddress fromAddress = new MailAddress("bala@OfficeName.com", "From Me");
        MailAddress toAddress = new MailAddress("bala@OfficeName.com", "To You");
        message.From = fromAddress;
        message.To.Add(toAddress);
        message.Subject = "Testing!";
        message.Body = "This is the body of a sample message";
        smtpClient.UseDefaultCredentials = true;
        System.Net.NetworkCredential nc = CredentialCache.DefaultNetworkCredentials;
        smtpClient.Credentials = (System.Net.ICredentialsByHost)nc.GetCredential("ExchangeServerName", 25, "Basic");
        smtpClient.Send(message);
        lblText.Text ="Email sent.";
    }
    catch (Exception ex)
    {
        lblText.Text = "Coudn't send the message!\n  " + ex.Message;
    }
}
4

3 回答 3

4

我已经做了。有关我的代码的更多详细信息,请使用此链接

下面的代码可以正常工作

服务器:Windows Server 2003、Windows Server 2008、Windows Server 2008 R2

IIS:6.0、7.0

.Net Frame Wotk : 2.0,3.5,4.0

string sMessage;
SmtpClient smtpClient = new SmtpClient();
MailMessage message = new MailMessage();
try
{

 //you can provide invalid from address. but to address Should be valil
MailAddress fromAddress = new MailAddress("bala@technospine.com", "BALA");

smtpClient.Host = "Exchange Server Name";
smtpClient.Port = 25;
//smtpClient.Port = 587;


smtpClient.UseDefaultCredentials = true; 

message.From = fromAddress;
message.To.Add(bala@technospine.com); //Recipent email 
message.Subject = _subject;
message.Body = _details;
message.IsBodyHtml = true;

//smtpClient.EnableSsl = true; 

smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;

smtpClient.Send(message); 

sMessage = "Email sent.";
}
catch (Exception ex)
{
sMessage = "Coudn't send the message!\n " + ex.Message;
}


lblMailStatus.Text = sMessage;
于 2012-07-26T03:16:15.037 回答
1

您正在尝试使用 Exchange 发送邮件。为此,发件人(或发送进程)必须对其登录的帐户具有权限,才能代表您指定为发件人的用户进行发送。这与通过 Exchange 的 SMTP 邮件传输代理 (MTA) 以使 Exchange 接收和路由电子邮件不同。因此,您知道应该使用 SMTP 执行此操作是正确的,但您只是尝试使用错误的 API 来完成此操作。您想查看 CDOSYS 以通过 SMTP MTA 发送它,而无需进行用户身份验证。在 System.Web.Mail.MailMessage 上搜索更具体的示例 - 那里有很多。如果 Exchange 服务器似乎不接受/传递以这种方式传递给它的 SMTP 邮件,您可能只需要稍微打开它的配置。在这种情况下,Exchange 服务器可能对通过其 SMTP MTA 接收的邮件的路由进行了严格的安全配置,并且只需要配置您发送这些邮件的机器的 IP 地址以允许邮件转发。

于 2012-07-11T16:36:48.310 回答
0

尝试 NetworkCredential nc = new Net.NetworkCredential("USERNAME", "PASSWORD","DOMAIN")

于 2013-02-19T16:21:12.633 回答