Ejemplo n.º 1
0
        public static async Task Receive(OrgDb orgdb, MailDb maildb, EmailAddress address, string MailFrom, string messagebody, Message msg)
        {
            // always in first.
            var folder = Spam.SpamFilter.DetermineFolder();

            msg.FolderId = folder.Id;
            maildb.Messages.Add(msg, messagebody);

            if (address.AddressType == EmailAddressType.Forward)
            {
                MailFrom = Utility.AddressUtility.GetAddress(MailFrom);

                if (address.ForwardAddress != null && Utility.AddressUtility.IsValidEmailAddress(address.ForwardAddress))
                {
                    var newbody = Kooboo.Mail.Utility.ComposeUtility.ComposeForwardAddressMessage(messagebody);

                    if (!string.IsNullOrEmpty(newbody))
                    {
                        List <string> forwardtos = new List <string>();
                        forwardtos.Add(address.ForwardAddress);
                        await Receive(MailFrom, forwardtos, newbody);
                    }
                }
            }

            else if (address.AddressType == EmailAddressType.Group)
            {
                MailFrom = Utility.AddressUtility.GetAddress(MailFrom);

                GroupMail group   = new GroupMail();
                string    newbody = Utility.ComposeUtility.ComposeGroupMail(messagebody, address.Address);

                if (!string.IsNullOrEmpty(newbody))
                {
                    var memebers = orgdb.EmailAddress.GetMembers(address.Id);
                    group.MailFrom       = MailFrom;
                    group.Members        = RemoveSelfMembers(memebers.ToList(), address.Address, MailFrom);
                    group.MessageContent = newbody;

                    if (group.Members.Count() <= 5)
                    {
                        await Receive(MailFrom, group.Members, newbody);
                    }
                    else
                    {
                        Queue.QueueManager.AddGroupMail(group);
                        await Queue.QueueManager.Execute();
                    }
                }
            }
        }
Ejemplo n.º 2
0
 public static void AddGroupMail(GroupMail input)
 {
     AddQueue(input);
 }