예제 #1
0
        /**
         * returns true if a contact is myself
         */
        internal static bool ParseFrom(IResource article, string fromValue, out IContact contact)
        {
            if (MIMEParser.ContainsMIMEStrings(fromValue))
            {
                fromValue = ParseTools.ParseMIMEHeader(fromValue);
            }

            fromValue = fromValue.Replace("<", null).Replace(">", null).Replace("\\", null).Replace("//", null);
            string[] parts = fromValue.Split(' ');
            string   eMail = string.Empty;

            foreach (string part in parts)
            {
                if (part.IndexOf('@') >= 0)
                {
                    eMail = part;
                    break;
                }
            }
            string displayName = fromValue;

            if (eMail.Length > 0)
            {
                displayName = displayName.Replace(eMail, null).Trim();
            }
            if (eMail.Length > 0 || displayName.Length > 0)
            {
                IContactManager cm      = Core.ContactManager;
                IResource       oldFrom = article.GetLinkProp(cm.Props.LinkFrom);
                contact = cm.FindOrCreateContact(eMail, displayName);
                cm.LinkContactToResource(cm.Props.LinkFrom, contact.Resource, article, eMail, displayName);
                if (oldFrom != null && contact.Resource != oldFrom)
                {
                    cm.DeleteUnusedContacts(oldFrom.ToResourceList());
                }
                return(contact.IsMyself);
            }
            contact = null;
            return(false);
        }
예제 #2
0
 internal static string TranslateHeader(string charset, string header)
 {
     header = MIMEParser.ContainsMIMEStrings(header) ? ParseTools.ParseMIMEHeader(header) :
              MIMEParser.TranslateRawStringInCharset(charset, header);
     return(header);
 }