2012-07-10 88 views
3

我想运行下面的代码,而我怎么能使用SMTP

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

发送邮件通过Exchange服务器只使用的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("[email protected]", "From Me"); 
     MailAddress toAddress = new MailAddress("[email protected]", "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

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

下面的代码是工作的罚款与

服务器:在Windows Server 2003,Windows Server 2008中,在Windows Server 2008 R2

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("[email protected]", "BALA"); 

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


smtpClient.UseDefaultCredentials = true; 

message.From = fromAddress; 
message.To.Add([email protected]); //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; 
1

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

0

尝试的NetworkCredential NC =新Net.NetworkCredential( “USERNAME”, “密码”, “域”)