ComponentPro UltimateMail

      DownloadMessage(Int32, String) Method

      See AlsoMembers Options: Show AllLanguage Filter: AllSend comments on this topic to ComponentPro
      Downloads the specified message from the server and writes its data into a local file.


      public long DownloadMessage(
         int messageInboxIndex, 
         string fileName


      The ordinal position of the message in the inbox. It must be in the range from 1 to MessageCount.
      The path of the local file. This cannot be a directory.

      Return Value

      On success, the length of the message in bytes.


      Shows how to connect to a POP3 server and download a message.

      using System;
      using System.Text;
      using ComponentPro.Net;
      using ComponentPro.Net.Mail;
      static void Main()
          // POP3 server information. 
          const string serverName = "myserver";
          const string user = "";
          const string password = "mytestpassword";
          const int port = 995;
          const SslSecurityMode securityMode = SslSecurityMode.Implicit;
          // Create a new instance of the Pop3 class. 
          Pop3 client = new Pop3();
          // Connect to the server. 
          client.Connect(serverName, port, securityMode);
          // Login to the server. 
          client.Authenticate(user, password);
          // Get the message list. 
          Console.WriteLine("Getting message list...");
          Pop3MessageCollection list = client.ListMessages(Pop3EnvelopeParts.UniqueId | Pop3EnvelopeParts.MessageInboxIndex);
          // Get messages. 
          for (int i = 0; i < list.Count; i++)
              Pop3Message message = list[i];
              // Get file name. 
              string filename = GetFilename(message.UniqueId) + ".eml";
              // Get new message only. 
              if (!System.IO.File.Exists(filename))
                  Console.WriteLine("Downloading message {0}...", message.MessageInboxIndex);
                  client.DownloadMessage(message.MessageInboxIndex, filename);
          // Close the connection. 
      /// <summary> 
      /// Returns a uniquely correct file name from the specified unique message ID. 
      /// </summary> 
      /// <param name="uniqueId">The unique id.</param> 
      /// <returns>The corrected file name.</returns> 
      private static string GetFilename(string uniqueId)
          // Characters allowed in the filename 
          const string allowed = " .-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
          // Replace invalid charactes with its hex representation 
          StringBuilder sb = new StringBuilder();
          for (int i = 0; i < uniqueId.Length; i++)
              if (allowed.IndexOf(uniqueId[i]) < 0)
                  sb.AppendFormat("_{0:X2}", (int)uniqueId[i]);
          return sb.ToString();


      .NET Compact Framework.NET Compact Framework

      Supported version: 2.0, 3.5, and 3.9
      Assembly: ComponentPro.Mail.CF (in ComponentPro.Mail.CF.dll)

      .NET Framework.NET Framework

      Supported version: 2.0, 3.0, 3.5, 4.0, 4.5.x, 4.6.x and later
      Assembly: ComponentPro.Mail (in ComponentPro.Mail.dll)

      Xamarin AndroidXamarin Android

      Supported version: 2.3 and later
      Assembly: ComponentPro.Mail.Android (in ComponentPro.Mail.Android.dll)

      Xamarin MacXamarin Mac

      Supported version: 2.0.x and later
      Assembly: ComponentPro.Mail.Mac (in ComponentPro.Mail.Mac.dll)

      Xamarin iOSXamarin iOS

      Supported version: 5.1.x and later
      Assembly: ComponentPro.Mail.iOS (in ComponentPro.Mail.iOS.dll)

      See Also