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; } } }
/// <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); }