Skip to main content

Biztalk : Extracting Email Body from a POP3 email file

        private static void Testing_Extracting_Email_Body_From_An_Email_File()
        {
            CDO.IMessage msg = GetCdoEmail(@"C:\BizTalk_Dropzone\MW\OSM.CrewMail\Process\00 - Emails from somebody (No MIME)\New folder\{2413639D-9F69-4E7F-ADE3-A0835E8821EB}.eml");
            Console.WriteLine(msg.TextBody);
            msg = null;
        }

        // Microsoft CDO for Windows 2000 Library
        // Microsoft ActiveX Data Objects 6.0 Library
        private static CDO.IMessage GetCdoEmail(string sAnEmailFile)
        {
            CDO.Message msg = new CDO.Message();

            // load MIME into CDO
            using (FileStream stream = new FileStream(sAnEmailFile, FileMode.Open))
            {
                // read file into a byte stream
                byte[] emailData = new byte[stream.Length];
                stream.Read(emailData, 0, (int)stream.Length);

                // load byte stream data into an ADODB stream for CDO
                ADODB.Stream stm = new ADODB.Stream();
                stm.Open(
                    System.Reflection.Missing.Value,
                    ADODB.ConnectModeEnum.adModeUnknown,
                    ADODB.StreamOpenOptionsEnum.adOpenStreamUnspecified,
                    null, null);
                stm.Type = ADODB.StreamTypeEnum.adTypeBinary;
                stm.Write(emailData);
                stm.Flush();
                stm.SetEOS();

                // attach data source to the CDO object
                msg.DataSource.OpenObject(stm, "_Stream");
                stm.Close();
            }
            return msg;
        }

Comments

  1. Though it was working most of the time say 99%, I discovered an issue just yesterday, that this function could not extract the body of an email created by a Biztalk. I'll post soon a solution, the one I am think out is using a Chilkat since we do have a license for it and we used it way back then.

    \m/

    ReplyDelete

Post a Comment