Notice: This website is an unofficial Microsoft Knowledge Base (hereinafter KB) archive and is intended to provide a reliable access to deleted content from Microsoft KB. All KB articles are owned by Microsoft Corporation. Read full disclaimer for more details.

How to send an e-mail message by using WebDAV in Visual C#

View products that this article applies to.

This article was previously published under Q313128

↑ Back to the top


This article describes how to send an e-mail message by using Web Distributed Authoring and Versioning (WebDAV) in Microsoft Visual C# . This article also includes sample code that you can use to send the e-mail message. In the sample code, the HttpWebRequest class sends a request to a computer that is running Microsoft Exchange 2000 Server, and the HttpWebResponse class receives the response.

Note The HttpWebRequest class and the HttpWebResponse class are in the "System.Net" namespace.

↑ Back to the top

More information

To send an e-mail message by using WebDAV in Visual C#, follow these steps:
  1. Start Microsoft Visual Studio .NET or Microsoft Visual Studio 2005.
  2. On the File menu, point to New, and then click Project.
  3. In the Visual C# Projects types list, click Console Application.

    Note In Visual Studio 2005, click Console Application in the Visual C# list.

    In Visual Studio .NET, Class1.cs is created by default. In Visual Studio 2005, Program.cs is created by default.
  4. In the code window, replace the code with the following:
    using System;
    using System.Net;
    using System.IO;   
    namespace WebDavNET
     /// <summary>
     /// Summary description for Class1.
     /// </summary>
     class Class1
      static void Main(string[] args)
        // TODO: Replace with the name of the computer that is running Exchange 2000.
        string  strServer = "ExchServe";
        // TODO: Replace with the sender's alias.
        string  strSenderAlias = "sender";  
        // TODO: Replace with the sender's e-mail address.
        string  strFrom = ""; 
        // TODO: Replace with the recipient's e-mail address.
        string  strTo = ""; 
        string  strSubject = "Send Using HttpWebRequest";
        string  strBody = "Hello World";
        string sUri;
        sUri = "http://" + strServer + "/Exchange/" + strSenderAlias;
        sUri = sUri + "/%23%23DavMailSubmissionURI%23%23/"; 
        System.Uri myUri = new System.Uri(sUri);
        HttpWebRequest HttpWRequest = (HttpWebRequest)WebRequest.Create(myUri);
        string sQuery;
        DateTime mySentTime = new DateTime();
        sQuery = "From: " + strFrom + "\n" + 
         "To: " + strTo + "\n" + 
         "Subject: " + strSubject + "\n" + 
         "Date: " + DateTime.Now.ToString() + "\n" +
         "X-Mailer: My DAV mailer" + "\n" + 
         "MIME-Version: 1.0" + "\n" + 
         "Content-Type: text/plain;" + "\n" + 
         "Charset = \"iso-8859-1\"" + "\n" + 
         "Content-Transfer-Encoding: 7bit" + "\n" + "\n" + 
        // Set the credentials.
        // TODO: Replace with the appropriate user credential.
        NetworkCredential myCred = new NetworkCredential(@"DomainName\User", "Password");
        CredentialCache myCredentialCache = new CredentialCache();
        myCredentialCache.Add(myUri, "Basic", myCred);
        HttpWRequest.Credentials = myCredentialCache;
        // Set the headers.
        HttpWRequest.Headers.Set("Translate", "f");
        HttpWRequest.ContentType =  "message/rfc822";
        HttpWRequest.ContentLength = sQuery.Length;
        //Set the request timeout to 5 minutes.
        HttpWRequest.Timeout = 300000;
        // Set the request method.
        HttpWRequest.Method = "PUT";
        // Store the data in a byte array.
        byte[] ByteQuery = System.Text.Encoding.ASCII.GetBytes(sQuery);
        HttpWRequest.ContentLength = ByteQuery.Length;
        Stream QueryStream = HttpWRequest.GetRequestStream();
        // write the data to be posted to the Request Stream
        // Send the request and get the response.
        HttpWebResponse HttpWResponse = (HttpWebResponse)HttpWRequest.GetResponse();
        // Get the Status code.
        int iStatCode =  (int)HttpWResponse.StatusCode;
        string sStatus = iStatCode.ToString();
        Console.WriteLine("Status Code: {0}", sStatus);
        // Get the request headers.
        string sReqHeaders = HttpWRequest.Headers.ToString();
        // Read the response stream.
        Stream strm = HttpWResponse.GetResponseStream();
        StreamReader sr = new StreamReader(strm);
        string sText = sr.ReadToEnd();
        Console.WriteLine("Response: {0}", sText);
        // Close the stream.
        // Clean up.
        myCred = null;
        myCredentialCache = null;
        HttpWRequest = null;
        HttpWResponse = null;
        QueryStream = null;
        strm = null;
        sr = null;
       catch (Exception e)
        Console.WriteLine("{0} Exception caught.", e);
  5. Search for TODO in the code, and then modify the code for your environment.
  6. Press F5 to build and to run the program.
  7. Make sure that the e-mail message was sent and received.

↑ Back to the top

Keywords: KB313128, kbhowto, kbmsg

↑ Back to the top

Article Info
Article ID : 313128
Revision : 7
Created on : 12/11/2006
Published on : 12/11/2006
Exists online : False
Views : 406