Send mail in WebDav



System.Net.HttpWebRequest PUTRequest;
System.Net.HttpWebRequest PUTRequest1;
System.Net.WebResponse PUTResponse;
System.Net.WebResponse PUTResponse1;
System.Net.HttpWebRequest PROPPATCHRequest;
System.Net.WebResponse PROPPATCHResponse;
System.Net.HttpWebRequest MOVERequest;
System.Net.WebResponse MOVEResponse;
System.Net.CredentialCache MyCredentialCache;
string strMailboxURI = "http://Your exchange server/exchange/";
string strSubURI = "http://Your exchange server/exchange/";
string strTempURI = "http://Your exchange server/exchange/";
string strServer = "Your exchange server";
string strPassword = "your password";
string strDomain = "your domain";
string strAlias = "your user name";
string strTo = "to whom u want to send";
string strSubject = "Test";
string strText = "This message was sent using WebDAV";
string strBody = "";
byte[] bytes = null;

System.IO.Stream PUTRequestStream = null;
public void Sendmail()
{

try
{
// Build the mailbox URI.

strMailboxURI = "http://"; + strServer + "/exchange/" + strAlias;

// Build the submission URI for the message. If Secure
// Sockets Layer (SSL) is set up on the server, use
// "https://"; instead of "http://";.

strSubURI = "http://"; + strServer + "/exchange/" + strAlias +
"/##DavMailSubmissionURI##/";
// Build the temporary URI for the message. If SSL is set
// up on the server, use "https://"; instead of "http://";.
strTempURI = "http://"; + strServer + "/exchange/" + strAlias + "/drafts/" +
strSubject + ".eml/";

// Construct the RFC 822 formatted body of the PUT request.
// Note: If the From: header is included here,
// the MOVE method request will return a
// 403 (Forbidden) status. The From address will
// be generated by the Exchange server.
strBody = "To: " + strTo + "\n" +
"Subject: " + strSubject + "\n" +
"Date: " + System.DateTime.Now +
"X-Mailer: test mailer" + "\n" +
"MIME-Version: 1.0" + "\n" +
"Content-Type: text/plain;" + "\n" +
"Charset = \"iso-8859-1\"" + "\n" +
"Content-Transfer-Encoding: 7bit" + "\n" +
"\n" + strText;
// Create a new CredentialCache object and fill it with the network
// credentials required to access the server.
MyCredentialCache = new System.Net.CredentialCache();
MyCredentialCache.Add(new System.Uri(strMailboxURI),
"Basic",
new System.Net.NetworkCredential(strAlias, strPassword, strDomain)
);


// Create the HttpWebRequest object.
PUTRequest = (System.Net.HttpWebRequest)HttpWebRequest.Create(strTempURI);
// Add the network credentials to the request.
PUTRequest.Credentials = MyCredentialCache;
// Specify the PUT method.
PUTRequest.Method = "PUT";
// Encode the body using UTF-8.
bytes = Encoding.UTF8.GetBytes((string)strBody);
// Set the content header length. This must be
// done before writing data to the request stream.
PUTRequest.ContentLength = bytes.Length;
// Get a reference to the request stream.
PUTRequestStream = PUTRequest.GetRequestStream();
// Write the message body to the request stream.
PUTRequestStream.Write(bytes, 0, bytes.Length);
// Close the Stream object to release the connection
// for further use.
PUTRequestStream.Close();
// Set the Content-Type header to the RFC 822 message format.
PUTRequest.ContentType = "message/rfc822";
// PUT the message in the Drafts folder of the
// sender's mailbox.
PUTResponse = (System.Net.HttpWebResponse)PUTRequest.GetResponse();
// Create the HttpWebRequest object.
MOVERequest = (System.Net.HttpWebRequest)HttpWebRequest.Create(strTempURI);
// Add the network credentials to the request.
MOVERequest.Credentials = MyCredentialCache;
// Specify the MOVE method.
MOVERequest.Method = "MOVE";
// Set the Destination header to the
// mail submission URI.
MOVERequest.Headers.Add("Destination", strSubURI);
// Send the message by moving it from the Drafts folder of the
// sender's mailbox to the mail submission URI.
MOVEResponse = (System.Net.HttpWebResponse)MOVERequest.GetResponse();
Console.WriteLine("Message successfully sent.");
// Clean up.
PUTResponse.Close();
MOVEResponse.Close();
}
catch (Exception ex)
{
// Catch any exceptions. Any error codes from the PUT
// or MOVE method requests on the server will be caught
// here, also.
Console.WriteLine(ex.Message);
}
}
.



Relevant Pages

  • RE: Server Response 550 5.7.1 Message Rejected even though we auth
    ... > whether the problem is caused by SMTP virtual server or not. ... > It is always recommended to keep Exchange running with the latest update. ... > sometimes need to request logon credentials, ... > Microsoft Online Partner Support ...
    (microsoft.public.exchange2000.admin)
  • Re: recipient update service exchange 2000 fails to stamp email addresses
    ... > the event log on the exchange server. ... > * Connecting to directory service on server domaincontroler. ... > Test omitted by user request: ... > Event Category: LDAP Operations ...
    (microsoft.public.exchange2000.admin)
  • RE: Exchange 2007 migration, OWA problem
    ... I am currently migrating to Exchange 2007, ... The curve here is that I am using the old existing server. ... Exception message: There was a problem accessing Active Directory. ... connection, DirectoryRequest request, DirectoryException de, Int32 ...
    (microsoft.public.exchange.setup)
  • RE: Exchange in SBS2003 R2
    ... Information Store First Storage Group: A request to read from the ... The server is not very slow in processing anything. ... Now I am wondering if I shouldn't used SBS 2003. ... Exchange edb and stm files for the private and public on E ...
    (microsoft.public.exchange.admin)
  • Re: OWA Access Problem
    ... See if it outlines the following, which can cause a 400 bad request for OWA ... users on an Exchange Backend: ... Exchange Server Analyzer Tool reads the following registry ... The Exchange Server Analyzer also examines the following registry entry to ...
    (microsoft.public.exchange.admin)