ParseAddresses() public static method

Parses a string containing addresses in the following formats : "John Doe" <[email protected]>,"Mike Johns" <[email protected]> "John Doe" <[email protected]>;"Mike Johns" <[email protected]> <[email protected]> [email protected]
public static ParseAddresses ( string input ) : ActiveUp.Net.Mail.AddressCollection
input string A string containing addresses in the formats desribed above.
return ActiveUp.Net.Mail.AddressCollection
Esempio n. 1
0
        public static void ParseHeader(ref Header header)
        {
            string hdr = System.Text.Encoding.ASCII.GetString(header.OriginalData);
            hdr = System.Text.RegularExpressions.Regex.Match(hdr, @"[\s\S]+?((?=\r?\n\r?\n)|\Z)").Value;
            hdr = Parser.Unfold(hdr);
            hdr = Codec.RFC2047Decode(hdr);
            System.Text.RegularExpressions.Match m = System.Text.RegularExpressions.Regex.Match(hdr, @"(?<=((\r?\n)|\n)|\A)\S+:(.|(\r?\n[\t ]))+(?=((\r?\n)\S)|\Z)");
            while(m.Success)
            {
                string name = FormatFieldName(m.Value.Substring(0, m.Value.IndexOf(':')));
                string value = m.Value.Substring(m.Value.IndexOf(":") + 1);
                if (name.Equals("received")) header.Trace.Add(Parser.ParseTrace(m.Value.Trim(' ')));
                else if (name.Equals("to")) header.To = Parser.ParseAddresses(value);
                else if (name.Equals("cc")) header.Cc = Parser.ParseAddresses(value);
                else if (name.Equals("bcc")) header.Bcc = Parser.ParseAddresses(value);
                else if (name.Equals("reply-to")) header.ReplyTo = Parser.ParseAddress(value);
                else if (name.Equals("from")) header.From = Parser.ParseAddress(value);
                else if (name.Equals("sender")) header.Sender = Parser.ParseAddress(value);
                else if (name.Equals("content-type")) header.ContentType = Parser.GetContentType(m.Value);
                else if (name.Equals("content-disposition")) header.ContentDisposition = Parser.GetContentDisposition(m.Value);

                header.HeaderFields.Add(name, value);
                header.HeaderFieldNames.Add(name, m.Value.Substring(0, m.Value.IndexOf(':')));
                m = m.NextMatch();
            }
        }
Esempio n. 2
0
        /*private static void ParseMessage(ref Message message)
        {
            ParseMessage(ref message, new X509Certificate2Collection());
        }*/
        private static Message ParseMessage(byte[] data)
        {
            string msg = System.Text.Encoding.ASCII.GetString(data);
            Message message = (Message)Parser.ParseMimeTypedAndEncodedContent(msg);

            foreach (string key in message.HeaderFields.AllKeys)
            {
                string name = key;
                string value = message.HeaderFields[key];
                if (name.Equals("received")) message.Trace.Add(Parser.ParseTrace(key + ": " + value));
                else if (name.Equals("to")) message.To = Parser.ParseAddresses(value);
                else if (name.Equals("cc")) message.Cc = Parser.ParseAddresses(value);
                else if (name.Equals("bcc")) message.Bcc = Parser.ParseAddresses(value);
                else if (name.Equals("reply-to")) message.ReplyTo = Parser.ParseAddress(value);
                else if (name.Equals("from")) message.From = Parser.ParseAddress(value);
                else if (name.Equals("sender")) message.Sender = Parser.ParseAddress(value);
                else if (name.Equals("content-type")) message.ContentType = Parser.GetContentType(key + ": " + value);
                else if (name.Equals("content-disposition")) message.ContentDisposition = Parser.GetContentDisposition(key + ": " + value);
                else if (name.Equals("domainkey-signature")) message.Signatures.DomainKeys = Signature.Parse(key + ": " + value, message);
            }

            return message;
            //if (message.ContentType.MimeType != null && message.ContentType.MimeType.IndexOf("multipart/signed") != -1) message.IsSigned = true;
            //if (message.ContentType.MimeType != null && message.ContentType.MimeType.IndexOf("multipart/encrypted") != -1) message.IsEncrypted = true;

        }
Esempio n. 3
0
        /// <summary>
        /// Parses the message.
        /// </summary>
        /// <param name="data">The data.</param>
        /// <returns></returns>
        public static Message ParseMessage(byte[] data)
        {
            //string msg = System.Text.Encoding.ASCII.GetString(data);
#if !PocketPC
            string msg = System.Text.Encoding.UTF8.GetString(data, 0, data.Length);
#else
            string msg = Pop3Client.PPCEncode.GetString(data, 0, data.Length);
#endif

            Message message = new Message();

            try
            {
                // Build a part tree and get all headers.
                MimePart part = ParseMimePart(msg, message);

                // Fill a new message object with the new information.
                message.OriginalData     = data;
                message.HeaderFields     = part.HeaderFields;
                message.HeaderFieldNames = part.HeaderFieldNames;

                // Dispatch header fields to corresponding object.
                foreach (string key in message.HeaderFields.AllKeys)
                {
                    string name  = key;
                    string value = message.HeaderFields[key];
                    // TODO : Fix trace
                    if (name.Equals("received"))
                    {
                        message.Trace.Add(Parser.ParseTrace(key + ": " + value));
                    }
                    else if (name.Equals("to"))
                    {
                        message.To = Parser.ParseAddresses(value);
                    }
                    else if (name.Equals("cc"))
                    {
                        message.Cc = Parser.ParseAddresses(value);
                    }
                    else if (name.Equals("bcc"))
                    {
                        message.Bcc = Parser.ParseAddresses(value);
                    }
                    else if (name.Equals("reply-to"))
                    {
                        message.ReplyTo = Parser.ParseAddress(value);
                    }
                    else if (name.Equals("from"))
                    {
                        message.From = Parser.ParseAddress(value);
                    }
                    else if (name.Equals("sender"))
                    {
                        message.Sender = Parser.ParseAddress(value);
                    }
                    else if (name.Equals("content-type"))
                    {
                        message.ContentType = Parser.GetContentType(key + ": " + value);
                    }
                    else if (name.Equals("content-disposition"))
                    {
                        message.ContentDisposition = Parser.GetContentDisposition(key + ": " + value);
                    }
                    else if (name.Equals("domainkey-signature"))
                    {
                        message.Signatures.DomainKeys = Signature.Parse(key + ": " + value, message);
                    }
                }

                if (message.ContentType.MimeType.Equals("application/pkcs7-mime") ||
                    message.ContentType.MimeType.Equals("application/x-pkcs7-mime"))
                {
                    if (message.ContentType.Parameters["smime-type"] != null &&
                        message.ContentType.Parameters["smime-type"].Equals("enveloped-data"))
                    {
                        message.IsSmimeEncrypted = true;
                    }
                    if (message.ContentType.Parameters["smime-type"] != null &&
                        message.ContentType.Parameters["smime-type"].Equals("signed-data"))
                    {
                        message.HasSmimeSignature = true;
                    }
                }

                if (message.ContentType.MimeType.Equals("multipart/signed"))
                {
                    message.HasSmimeDetachedSignature = true;
                }

                // Keep a reference to the part tree within the new Message object.
                message.PartTreeRoot = part;

                DispatchParts(ref message);

                // Dispatch the part tree content to the appropriate collections and properties.
                // TODO
            }
            catch (Exception ex)
            {
                if (ErrorParsing != null)
                {
                    ErrorParsing(null, ex);
                }
            }
            return(message);
        }
Esempio n. 4
0
        /// <summary>
        /// Parses the header.
        /// </summary>
        /// <param name="header">The header.</param>
        public static void ParseHeader(ref Header header)
        {
#if !PocketPC
            string hdr = System.Text.Encoding.GetEncoding("iso-8859-1").GetString(header.OriginalData, 0, header.OriginalData.Length);
#else
            string hdr = Pop3Client.PPCEncode.GetString(header.OriginalData, 0, header.OriginalData.Length);
#endif
            hdr = System.Text.RegularExpressions.Regex.Match(hdr, @"[\s\S]+?((?=\r?\n\r?\n)|\Z)").Value;
            hdr = Parser.Unfold(hdr);
            //hdr = hdr);
            System.Text.RegularExpressions.Match m = System.Text.RegularExpressions.Regex.Match(hdr, @"(?<=((\r?\n)|\n)|\A)\S+:(.|(\r?\n[\t ]))+(?=((\r?\n)\S)|\Z)");
            while (m.Success)
            {
                string name  = FormatFieldName(m.Value.Substring(0, m.Value.IndexOf(':')));
                string value = Codec.RFC2047Decode(m.Value.Substring(m.Value.IndexOf(":") + 1)).Trim('\r', '\n').TrimStart(' ');
                if (name.Equals("received"))
                {
                    header.Trace.Add(Parser.ParseTrace(m.Value.Trim(' ')));
                }
                else if (name.Equals("to"))
                {
                    header.To = Parser.ParseAddresses(value);
                }
                else if (name.Equals("cc"))
                {
                    header.Cc = Parser.ParseAddresses(value);
                }
                else if (name.Equals("bcc"))
                {
                    header.Bcc = Parser.ParseAddresses(value);
                }
                else if (name.Equals("reply-to"))
                {
                    header.ReplyTo = Parser.ParseAddress(value);
                }
                else if (name.Equals("from"))
                {
                    header.From = Parser.ParseAddress(value);
                }
                else if (name.Equals("sender"))
                {
                    header.Sender = Parser.ParseAddress(value);
                }
                else if (name.Equals("content-type"))
                {
                    header.ContentType = Parser.GetContentType(m.Value);
                }
                else if (name.Equals("content-disposition"))
                {
                    header.ContentDisposition = Parser.GetContentDisposition(m.Value);
                }
                //else
                //{
                header.HeaderFields.Add(name, value);
                header.HeaderFieldNames.Add(name, m.Value.Substring(0, m.Value.IndexOf(':')));
                //}
                m = m.NextMatch();

                if (HeaderFieldParsing != null)
                {
                    HeaderFieldParsing(null, header);
                }
            }
        }
Esempio n. 5
0
		private static void ParseMessage(ref Message message, X509Certificate2Collection certificates)
		{   
            // Header parsing work
        
            string msg = System.Text.Encoding.ASCII.GetString(message.OriginalData);
            string header = msg.Substring(0,Regex.Match(msg, @"\r?\n\r?\n").Index);
            header = Parser.Unfold(header);
            header = Codec.RFC2047Decode(header);
            Match m = Regex.Match(header, @"(?<=((\r?\n)|\n)|\A)\S+:(.|(\r?\n[\t ]))+(?=((\r?\n)\S)|\Z)");
            while (m.Success)
            {
                string name = FormatFieldName(m.Value.Substring(0, m.Value.IndexOf(':')));
                string value = m.Value.Substring(m.Value.IndexOf(":") + 1);
                if (name.Equals("received")) message.Trace.Add(Parser.ParseTrace(m.Value.Trim(' ')));
                else if (name.Equals("to")) message.To = Parser.ParseAddresses(value);
                else if (name.Equals("cc")) message.Cc = Parser.ParseAddresses(value);
                else if (name.Equals("bcc")) message.Bcc = Parser.ParseAddresses(value);
                else if (name.Equals("reply-to")) message.ReplyTo = Parser.ParseAddress(value);
                else if (name.Equals("from")) message.From = Parser.ParseAddress(value);
                else if (name.Equals("sender")) message.Sender = Parser.ParseAddress(value);
                else if (name.Equals("content-type")) message.ContentType = Parser.GetContentType(m.Value);
                else if (name.Equals("content-disposition")) message.ContentDisposition = Parser.GetContentDisposition(m.Value);
                else if (name.Equals("domainkey-signature")) message.Signatures.DomainKeys = Signature.Parse(m.Value,message);

                message.HeaderFields.Add(name,value);
                message.HeaderFieldNames.Add(name, m.Value.Substring(0, m.Value.IndexOf(':')));
                m = m.NextMatch();
            }

            // Body parsing work

            if (message.ContentType.MimeType != null && message.ContentType.MimeType.IndexOf("multipart/signed") != -1) message.IsSigned = true;
            if (message.ContentType.MimeType != null && message.ContentType.MimeType.IndexOf("multipart/encrypted") != -1) message.IsEncrypted = true;

            //MimeTypedAndEncodedContent part = Parser.ParseMimeTypedAndEncodedContent(msg);//, certificates);
            
            /*if (part.ContentType.MimeType!=null && part.ContentType.MimeType.IndexOf("multipart/") != -1)
	        {
                Parser.ParseMultipart(ref message, part, certificates);
		        Parser.DistributeParts(ref message);
		        Parser.SetBodies(ref message);
	        }
            else if (part.ContentDisposition.Disposition.Equals("attachment"))
            {
                message.AllMimeParts.Add(part);
                message.Attachments.Add(part);
            }
            else
            {
                message.AllMimeParts.Add(part);
                if (part.ContentType.MimeType!=null && part.ContentType.MimeType.ToLower().IndexOf("text/html") != -1)
                {
                    if (part.ContentTransferEncoding == ContentTransferEncoding.Base64) message.BodyHtml.Text = System.Text.Encoding.GetEncoding(part.Charset).GetString(System.Convert.FromBase64String(part.TextContent.Substring(0, part.TextContent.IndexOf("\r\n\r\n"))));
                    else message.BodyHtml.Text = part.TextContent;
                }
                else if (part.ContentType.MimeType != null && part.ContentType.MimeType.ToLower().IndexOf("text/plain") != -1)
                {
                    if (part.ContentTransferEncoding == ContentTransferEncoding.Base64) message.BodyText.Text = System.Text.Encoding.GetEncoding(part.Charset).GetString(System.Convert.FromBase64String(part.TextContent.Substring(0, part.TextContent.IndexOf("\r\n\r\n"))));
                    else message.BodyText.Text = part.TextContent;
                }
                else
                {
                    message.BodyText.Text = System.Text.Encoding.ASCII.GetString(message.BodyBinary);
                }
            }

			if (!ActiveUp.Base.InternalLicense.Status.IsRegistered || ActiveUp.Base.InternalLicense.IsLite())
			{

				if (message.BodyHtml.Text.Length > 0
					&& message.BodyHtml.Text.IndexOf(ActiveUp.Base.InternalLicense.UnRegisteredHtmlSent) == -1
					&& message.BodyHtml.Text.IndexOf(ActiveUp.Base.InternalLicense.SponsorHtmlSent) == -1
					&& message.BodyHtml.Text.IndexOf(ActiveUp.Base.InternalLicense.UnRegisteredHtmlReceived) == -1)
					message.BodyHtml.Text = ActiveUp.Base.InternalLicense.UnRegisteredHtmlReceived + "<br><br>" +  message.BodyHtml.Text;
                
				if ((message.BodyText.Text.Length > 0 || message.BodyHtml.Text.Length == 0)
					&& message.BodyText.Text.IndexOf(ActiveUp.Base.InternalLicense.UnRegisteredTextSent) == -1
					&& message.BodyText.Text.IndexOf(ActiveUp.Base.InternalLicense.SponsorTextSent) == -1
					&& message.BodyText.Text.IndexOf(ActiveUp.Base.InternalLicense.UnRegisteredTextReceived) == -1)
					message.BodyText.Text = ActiveUp.Base.InternalLicense.UnRegisteredTextReceived + "\n\n" + message.BodyText.Text; 
			}
			
            else if (ActiveUp.Base.InternalLicense.IsSponsored())
			{
				if (message.BodyHtml.Text.Length > 0
					&& message.BodyHtml.Text.IndexOf(ActiveUp.Base.InternalLicense.SponsorHtmlSent) == -1
					&& message.BodyHtml.Text.IndexOf(ActiveUp.Base.InternalLicense.SponsorHtmlReceived) == -1
					&& message.BodyHtml.Text.IndexOf(ActiveUp.Base.InternalLicense.UnRegisteredHtmlSent) == -1)
					message.BodyHtml.Text += "<br><br>" + ActiveUp.Base.InternalLicense.SponsorHtmlReceived;

				if ((message.BodyText.Text.Length > 0 || message.BodyHtml.Text.Length == 0)
					&& message.BodyText.Text.IndexOf(ActiveUp.Base.InternalLicense.SponsorTextSent) == -1
					&& message.BodyText.Text.IndexOf(ActiveUp.Base.InternalLicense.SponsorTextReceived) == -1
					&& message.BodyHtml.Text.IndexOf(ActiveUp.Base.InternalLicense.UnRegisteredTextSent) == -1)
					message.BodyText.Text += "\n\n" + ActiveUp.Base.InternalLicense.SponsorTextReceived;
			}*/
		}