LumiSoft.Net.Mime.MimeConstructor.ToStream C# (CSharp) Method

ToStream() public method

Stores mime message to specified stream. Stream position stays where mime writing ends.
public ToStream ( Stream storeStream ) : void
storeStream Stream Stream where to store mime message.
return void
        public void ToStream(Stream storeStream)
        {
            byte[] buf = null;

            string mainBoundaryID = "----=_NextPart_" + Guid.NewGuid().ToString().Replace("-","_");

            // Write headers
            buf = System.Text.Encoding.Default.GetBytes(m_pHeader.ToHeaderString("utf-8"));
            storeStream.Write(buf,0,buf.Length);

            // Content-Type:
            buf = System.Text.Encoding.Default.GetBytes("Content-Type: " + "multipart/mixed;\r\n\tboundary=\"" + mainBoundaryID + "\"\r\n");
            storeStream.Write(buf,0,buf.Length);

            //
            buf = System.Text.Encoding.Default.GetBytes("\r\nThis is a multi-part message in MIME format.\r\n\r\n");
            storeStream.Write(buf,0,buf.Length);

            string bodyBoundaryID = "----=_NextPart_" + Guid.NewGuid().ToString().Replace("-","_");

            buf = System.Text.Encoding.Default.GetBytes("--" + mainBoundaryID + "\r\n");
            storeStream.Write(buf,0,buf.Length);
            buf = System.Text.Encoding.Default.GetBytes("Content-Type: multipart/alternative;\r\n\tboundary=\"" + bodyBoundaryID + "\"\r\n\r\n");
            storeStream.Write(buf,0,buf.Length);

            buf = System.Text.Encoding.Default.GetBytes(ConstructBody(bodyBoundaryID));
            storeStream.Write(buf,0,buf.Length);

            buf = System.Text.Encoding.Default.GetBytes("--" + bodyBoundaryID + "--\r\n");
            storeStream.Write(buf,0,buf.Length);

            //-- Construct attachments
            foreach(Attachment att in m_pAttachments){
                buf = System.Text.Encoding.Default.GetBytes("\r\n--" + mainBoundaryID + "\r\n");
                storeStream.Write(buf,0,buf.Length);

                buf = System.Text.Encoding.Default.GetBytes("Content-Type: application/octet;\r\n\tname=\"" + Core.CanonicalEncode(att.FileName,m_CharSet) + "\"\r\n");
                storeStream.Write(buf,0,buf.Length);

                buf = System.Text.Encoding.Default.GetBytes("Content-Transfer-Encoding: base64\r\n");
                storeStream.Write(buf,0,buf.Length);

                buf = System.Text.Encoding.Default.GetBytes("Content-Disposition: attachment;\r\n\tfilename=\"" + Core.CanonicalEncode(att.FileName,m_CharSet) + "\"\r\n\r\n");
                storeStream.Write(buf,0,buf.Length);

                buf = System.Text.Encoding.Default.GetBytes(SplitString(Convert.ToBase64String(att.FileData)));
                storeStream.Write(buf,0,buf.Length);
            }

            buf = System.Text.Encoding.Default.GetBytes("\r\n");
            storeStream.Write(buf,0,buf.Length);

            buf = System.Text.Encoding.Default.GetBytes("--" + mainBoundaryID + "--\r\n");
            storeStream.Write(buf,0,buf.Length);
        }