示例#1
0
        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;
 }