Click here to Skip to main content
Click here to Skip to main content

A C# Implementation of Mime De/encode

, 21 Aug 2005
Rate this:
Please Sign up or sign in to vote.
A C# implementation of Mime de/encode


Several days ago, when I needed a MIME lib to encode/decode some MIME type messages in C#, I did not find any suitable classes. What I only found is a C++ implementation written by nickadams. I read his code and then, I translated it into C# code. And it works well for me.

How To Use

It is as easy to use as nickadams' code.Smile | :) Here's the example:

Encode a Message

   MimeMessage mail = new MimeMessage();
      Nick Name <>, 
      \"Nick Name\" <>");
   mail.SetSubject("test mail",null);
   mail.SetFieldValue("X-Priority", "3 (Normal)", null);

   // Initialize header
   // generate a boundary string automatically
   // if the parameter is NULL
   // Add a text body part
   // default Content-Type is "text/plain"
   // default Content-Transfer-Encoding is "7bit"
   MimeBody mBody = mail.CreatePart();
   mBody.SetText("Hi, there");  // set the content of the body part

   // Add a file attachment body part
   mBody = mail.CreatePart();
   mBody.SetDescription("enclosed photo",null);
   // if Content-Type is not specified, it'll be
   // set to "image/jpeg" by ReadFromFile()

   // Generate a simple message
   MimeMessage mail2 = new MimeMessage();
   mail2.SetSubject("This is an attached message",null);
   mail2.SetText("Content of attached message.\r\n");

   // Attach the message
   mBody = mail.CreatePart();
   mBody.SetDescription("enclosed message",null);
   // if Content-Type is not specified, it'll be
   // set to "message/rfc822" by SetMessage()

   // Add an embedded multipart
   mBody = mail.CreatePart();
   MimeBody mBodyChild = mBody.CreatePart();
   mBodyChild.SetText("Content of Part 1\r\n");
   mBodyChild = mBody.CreatePart();
   mBodyChild.SetText("Content of Part 2\r\n");

   //store content to a string buffer
   StringBuilder sb = new StringBuilder();

Decode a Message

   StreamReader sr = new StreamReader(".\\aaa.txt");
   string message = sr.ReadToEnd();
   MimeMessage aMimeMessage = new MimeMessage();
   ArrayList bodylist = new ArrayList();
   for(int i=0;i<bodylist.Count;i++)
    MimeBody ab = (MimeBody) bodylist[i];
     string m = ab.GetText();
    else if(ab.IsAttachment())


Many thanks to nickadams. Your great work helps me a lot.


  • 21st August, 2005: Initial post


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Web Developer
China China
I think I have to start coding my life now...Smile | :)

Comments and Discussions

GeneralHpw to download attatchment that are inside MIME file Pinmemberrishi2123-Feb-11 17:48 
GeneralError decoding image attachments please help PinmemberWajeeh7-Dec-09 20:40 
GeneralUnsafe code PinmemberGWBas1c6-Aug-09 9:38 
GeneralGreat! Thanks. Pinmemberbhiller24-Jul-09 3:29 
Maybe only China and Germany have to suffer from missing ASCII compatibility... I tried several Pop3 projects on codeproject, but they failed when it came to national characters in the email body, or in the subject line. Now, I take Peter Huber's Pop3MailClient, call GetRawEmail, and put the raw message into MIME.MimeMessage. It really works!
A minor fix I had to introduce is an error encountered with subject line
"Subject: =?utf-8?Q?=34=2e=38=33=36_neue_Positionen_=2d_Ihre_aktuelle_Stellen=c3=bcbersicht?="
It is in MimeFieldCodeBase.DecodeToString, line 36 of the file. Simply do a if (j == k + 2) j = s.IndexOf("?=", j + 1); before determining the substring.
Generalgod bless you Pinmemberbookerman12-Jan-09 5:10 
GeneralLicense PinmemberMember 384073731-Aug-08 4:18 
GeneralBug: empty lines in mime header and mime body without children PinmemberdB.26-Jun-08 6:17 
GeneralBug: inifinite loop in processing PinmemberdB.26-Jun-08 4:15 
GeneralMIME digital signature Pinmemberkerberos_prozac5-Jul-06 6:53 
GeneralRe: MIME digital signature Pinmemberkerberos_prozac5-Jul-06 7:11 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web04 | 2.8.140709.1 | Last Updated 22 Aug 2005
Article Copyright 2005 by tauyoung
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid