如何使用SMTP通过Exchange Server发送邮件



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

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;
    }
}

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

以下代码适用于

服务器:WindowsServer2003、WindowsServer2008、WindowsServer2008R2

IIS:6.0、7.0

.Net框架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;

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

try NetworkCredential nc=new Net.NetworkCredential("用户名"、"密码"、"域")

最新更新