示例#1
0
 protected void btnSendMassEmail_Click(object sender, EventArgs e)
 {
     if (Page.IsValid)
     {
         int scriptTimeout = base.Server.ScriptTimeout;
         try
         {
             Server.ScriptTimeout = 300;
             NewsLetterSubscriptionCollection subscriptions = MessageManager.GetAllNewsLetterSubscriptions(false);
             int totalEmailsSent = CampaignManager.SendCampaign(this.CampaignId, subscriptions);
             lblSendEmailResult.Text = string.Format(GetLocaleResourceString("Admin.CampaignInfo.EmailSentToCustomers"), totalEmailsSent);
         }
         catch (Exception exc)
         {
             lblSendEmailResult.Text = exc.ToString();
         }
         finally
         {
             Server.ScriptTimeout = scriptTimeout;
         }
     }
 }
示例#2
0
        /// <summary>
        /// Sends a campaign to specified emails
        /// </summary>
        /// <param name="campaignId">Campaign identifier</param>
        /// <param name="subscriptions">Subscriptions</param>
        /// <returns>Total emails sent</returns>
        public static int SendCampaign(int campaignId,
                                       NewsLetterSubscriptionCollection subscriptions)
        {
            int totalEmailsSent = 0;
            var campaign        = GetCampaignById(campaignId);

            if (campaign == null)
            {
                throw new NopException("Campaign could not be loaded");
            }

            foreach (var subscription in subscriptions)
            {
                string subject = MessageManager.ReplaceMessageTemplateTokens(subscription, campaign.Subject);
                string body    = MessageManager.ReplaceMessageTemplateTokens(subscription, campaign.Body);
                var    from    = new MailAddress(MessageManager.AdminEmailAddress, MessageManager.AdminEmailDisplayName);
                var    to      = new MailAddress(subscription.Email);
                MessageManager.InsertQueuedEmail(3, from, to, string.Empty, string.Empty, subject, body, DateTime.Now, 0, null);
                totalEmailsSent++;
            }
            return(totalEmailsSent);
        }