예제 #1
0
 public static void SendQueuedEmails(int failureInterval, int maxNumberOfTries, SiteSettings settings)
 {
     if (settings != null)
     {
         HiConfiguration config = HiConfiguration.GetConfig();
         Dictionary <Guid, MailMessage> dictionary = EmailQueueProvider.Instance().DequeueEmail();
         IList <Guid> list   = new List <Guid>();
         EmailSender  sender = Messenger.CreateEmailSender(settings);
         if (sender != null)
         {
             int   num = 0;
             short smtpServerConnectionLimit = config.SmtpServerConnectionLimit;
             foreach (Guid guid in dictionary.Keys)
             {
                 if (Messenger.SendMail(dictionary[guid], sender))
                 {
                     EmailQueueProvider.Instance().DeleteQueuedEmail(guid);
                     if ((smtpServerConnectionLimit != -1) && (++num >= smtpServerConnectionLimit))
                     {
                         Thread.Sleep(new TimeSpan(0, 0, 0, 15, 0));
                         num = 0;
                     }
                 }
                 else
                 {
                     list.Add(guid);
                 }
             }
             if (list.Count > 0)
             {
                 EmailQueueProvider.Instance().QueueSendingFailure(list, failureInterval, maxNumberOfTries);
             }
         }
     }
 }
예제 #2
0
 public static void SendQueuedEmails(int failureInterval, int maxNumberOfTries, SiteSettings settings)
 {
     if (settings != null)
     {
         HiConfiguration config = HiConfiguration.GetConfig();
         System.Collections.Generic.Dictionary <System.Guid, System.Net.Mail.MailMessage> dictionary = EmailQueueProvider.Instance().DequeueEmail();
         System.Collections.Generic.IList <System.Guid> list = new System.Collections.Generic.List <System.Guid>();
         EmailSender emailSender = Messenger.CreateEmailSender(settings);
         if (emailSender != null)
         {
             int   num = 0;
             short smtpServerConnectionLimit = config.SmtpServerConnectionLimit;
             foreach (System.Guid current in dictionary.Keys)
             {
                 if (Messenger.SendMail(dictionary[current], emailSender))
                 {
                     EmailQueueProvider.Instance().DeleteQueuedEmail(current);
                     if (smtpServerConnectionLimit != -1 && ++num >= (int)smtpServerConnectionLimit)
                     {
                         System.Threading.Thread.Sleep(new System.TimeSpan(0, 0, 0, 15, 0));
                         num = 0;
                     }
                 }
                 else
                 {
                     list.Add(current);
                 }
             }
             if (list.Count > 0)
             {
                 EmailQueueProvider.Instance().QueueSendingFailure(list, failureInterval, maxNumberOfTries);
             }
         }
     }
 }
예제 #3
0
        public static void SendSubsiteEmails(int failureInterval, int maxNumberOfTries)
        {
            HiConfiguration config = HiConfiguration.GetConfig();

            System.Collections.Generic.Dictionary <System.Guid, SubsiteMailMessage> dictionary = EmailQueueProvider.Instance().DequeueDistributorEmail();
            System.Collections.Generic.Dictionary <int, EmailSender> dictionary2 = new System.Collections.Generic.Dictionary <int, EmailSender>();
            System.Collections.Generic.IList <System.Guid>           list        = new System.Collections.Generic.List <System.Guid>();
            System.Collections.Generic.IList <int> list2 = new System.Collections.Generic.List <int>();
            int   num = 0;
            short smtpServerConnectionLimit = config.SmtpServerConnectionLimit;

            foreach (System.Guid current in dictionary.Keys)
            {
                int distributorUserId = dictionary[current].DistributorUserId;
                if (!list2.Contains(distributorUserId))
                {
                    EmailSender emailSender;
                    if (!dictionary2.ContainsKey(distributorUserId))
                    {
                        SiteSettings siteSettings = SettingsManager.GetSiteSettings(distributorUserId);
                        if (siteSettings == null)
                        {
                            list2.Add(distributorUserId);
                            continue;
                        }
                        emailSender = Messenger.CreateEmailSender(siteSettings);
                        if (emailSender == null)
                        {
                            list2.Add(distributorUserId);
                            continue;
                        }
                        dictionary2.Add(distributorUserId, emailSender);
                    }
                    else
                    {
                        emailSender = dictionary2[distributorUserId];
                    }
                    if (Messenger.SendMail(dictionary[current].Mail, emailSender))
                    {
                        EmailQueueProvider.Instance().DeleteDistributorQueuedEmail(current);
                        if (smtpServerConnectionLimit != -1 && ++num >= (int)smtpServerConnectionLimit)
                        {
                            System.Threading.Thread.Sleep(new System.TimeSpan(0, 0, 0, 15, 0));
                            num = 0;
                        }
                    }
                    else
                    {
                        list.Add(current);
                    }
                }
            }
            if (list.Count > 0)
            {
                EmailQueueProvider.Instance().QueueDistributorSendingFailure(list, failureInterval, maxNumberOfTries);
            }
        }
예제 #4
0
        public static void SendSubsiteEmails(int failureInterval, int maxNumberOfTries)
        {
            HiConfiguration config = HiConfiguration.GetConfig();
            Dictionary <Guid, SubsiteMailMessage> dictionary  = EmailQueueProvider.Instance().DequeueDistributorEmail();
            Dictionary <int, EmailSender>         dictionary2 = new Dictionary <int, EmailSender>();
            IList <Guid> list  = new List <Guid>();
            IList <int>  list2 = new List <int>();
            int          num   = 0;
            short        smtpServerConnectionLimit = config.SmtpServerConnectionLimit;

            foreach (Guid guid in dictionary.Keys)
            {
                int distributorUserId = dictionary[guid].DistributorUserId;
                if (!list2.Contains(distributorUserId))
                {
                    EmailSender sender = null;
                    if (!dictionary2.ContainsKey(distributorUserId))
                    {
                        SiteSettings siteSettings = SettingsManager.GetSiteSettings(distributorUserId);
                        if (siteSettings == null)
                        {
                            list2.Add(distributorUserId);
                            continue;
                        }
                        sender = Messenger.CreateEmailSender(siteSettings);
                        if (sender == null)
                        {
                            list2.Add(distributorUserId);
                            continue;
                        }
                        dictionary2.Add(distributorUserId, sender);
                    }
                    else
                    {
                        sender = dictionary2[distributorUserId];
                    }
                    if (Messenger.SendMail(dictionary[guid].Mail, sender))
                    {
                        EmailQueueProvider.Instance().DeleteDistributorQueuedEmail(guid);
                        if ((smtpServerConnectionLimit != -1) && (++num >= smtpServerConnectionLimit))
                        {
                            Thread.Sleep(new TimeSpan(0, 0, 0, 15, 0));
                            num = 0;
                        }
                    }
                    else
                    {
                        list.Add(guid);
                    }
                }
            }
            if (list.Count > 0)
            {
                EmailQueueProvider.Instance().QueueDistributorSendingFailure(list, failureInterval, maxNumberOfTries);
            }
        }
예제 #5
0
 internal static void EnqueuEmail(MailMessage email, SiteSettings settings)
 {
     if (((email != null) && (email.To != null)) && (email.To.Count > 0))
     {
         if (settings.IsDistributorSettings)
         {
             EmailQueueProvider.Instance().QueueDistributorEmail(email, settings.UserId.Value);
         }
         else
         {
             EmailQueueProvider.Instance().QueueEmail(email);
         }
     }
 }
예제 #6
0
 static EmailQueueProvider()
 {
     EmailQueueProvider.DefaultInstance = (DataProviders.CreateInstance("Hidistro.Messages.Data.EmailQueueData,Hidistro.Messages.Data") as EmailQueueProvider);
 }