static void GenerateAndSendNewsletter() { // Load articles from db // NOTE: articles selected tightly coupled to datetime when this method is run var payload = NewsletterGenerator.GetLoadedPayload(); // @TODO: Create newsletter record in db // @TODO: Associate articles with newsletter // Create html for newsletter string formattedArticles = NewsletterGenerator.FormatPayload(payload); string template = System.IO.File.ReadAllText("Newsletter/SlackerWeeklyTemplate.html"); string email = template.Replace(NewsletterGenerator.TemplateReplacementTag, formattedArticles); // Upload via MailChimp API //var mc = new MailChimp.Campaigns.Campaign(); MailChimpManager mc = new MailChimpManager(Settings.Get(Settings.AppSettingKeys.MailChimpApiKey)); string subject = payload.GetSubjectLine(); var response = mc.CreateCampaign("regular", new MailChimp.Campaigns.CampaignCreateOptions { ListId = Settings.Get(Settings.AppSettingKeys.MailChimpListId), FromName = "Slacker Weekly", FromEmail = "*****@*****.**", Subject = subject, Title = "SlackerWeekly for " + DateTimeHelpers.ThisWeekFormatted, // For reporting purposes inside MailChimp Authenticate = true, // SPF, DKIM, etc. GenerateText = true, // auto generate plaintext version from HTML version InlineCSS = true }, new MailChimp.Campaigns.CampaignCreateContent { HTML = email, }, null, null); // Control scheduling by when you call this method, i.e. windows task scheduler // Target is 5pm UTC Mondays, which translates to: // 9am PST Monday // 10am PDT Monday string campaignId = response.Id; NLog.LogManager.GetCurrentClassLogger().Info("Created campaign on MailChimp. Received campaingId: " + campaignId); mc.SendCampaign(campaignId); NLog.LogManager.GetCurrentClassLogger().Info("Sent Campaign " + campaignId); }
public ArtistController(IArtistService artists, NewsletterGenerator newsletter) : base() { _artists = artists; _newsletter = newsletter; }