How Can i Send Mail Through Exchange Server by using SMTP

ぐ巨炮叔叔 提交于 2020-01-01 12:26:06

问题


I want to Run Below code without

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

BY using Only Exchange Host (Server Name) And Port

Im Getting Error For this code : Mailbox unavailable. The server response was: 5.7.1 Client does not have permissions to send as this sender

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

回答1:


I have done it. For more details about my code use this link.

Below Code is worked Fine with

Server : 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;



回答2:


You are attempting to send a mail message using Exchange. In order to do that, the sender (or sending process) must have permissions on the account it is logged in under to send on behalf of the user you are specifying as the sender. This is different from going through Exchange's SMTP mail transfer agent (MTA) in order to have Exchange receive and route an email message. So you are on the right track with knowing you should do this using SMTP, but you are just trying to use the wrong API for accomplishing this. You want to take a look at CDOSYS for sending it through the SMTP MTA without having to do user authentication. Search on System.Web.Mail.MailMessage for more specific examples - there are plenty out there. If the Exchange server does not seem to accept/deliver the SMTP message delivered to it in this fashion, you might simply need to open up its configuration a bit. In that event, the Exchange server is probably configured with tight security on routing of mail received via its SMTP MTA and just needs to have the IP address of the machine(s) you are sending these messages from configured to allow for mail forwarding.




回答3:


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



来源:https://stackoverflow.com/questions/11417344/how-can-i-send-mail-through-exchange-server-by-using-smtp

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!