コード例 #1
0
        public async Task SendEmail(BulkEmailCampaignSendRequest bulkEmail)
        {
            var request = new SendBulkTemplatedEmailRequest
            {
                Source              = Environment.GetEnvironmentVariable("AWS_SES_EMAIL_ACCOUNT"),
                Template            = bulkEmail.EmailTemplateId,
                DefaultTemplateData = JsonConvert.SerializeObject(new { name = "user" }),
                Destinations        = new List <BulkEmailDestination>()
            };

            foreach (var item in bulkEmail.Contacts)
            {
                var templateData = new { name = item.Name };
                request.Destinations.Add(new BulkEmailDestination {
                    ReplacementTemplateData = JsonConvert.SerializeObject(templateData),
                    Destination             = new Destination
                    {
                        ToAddresses = new List <string>
                        {
                            item.Email
                        }
                    }
                });
            }
            await _awsSes.SendBulkTemplatedEmailAsync(request);
        }
コード例 #2
0
        public async Task SendCampaign(int campaignId)
        {
            var campaignData = await(from c in _unitOfWork.GetRepository <Campaign>().AsQueryable()
                                     where c.Id == campaignId
                                     select new BulkEmailCampaignSendRequest
            {
                EmailTemplateId = c.EmailTemplate.AwsTemplateId,
                Contacts        = (from cl in c.ContactLists
                                   from co in cl.Contacts
                                   where co.Active && cl.Active
                                   select new BulkEmailCampaignContact
                {
                    Name = co.Name,
                    Email = co.Email,
                }).ToList()
            }).FirstAsync();

            campaignData.Contacts = campaignData.Contacts.Distinct().ToList();

            while (campaignData.Contacts.Any())
            {
                var top  = campaignData.Contacts.Take(50).ToList();
                var data = new BulkEmailCampaignSendRequest
                {
                    Contacts        = top,
                    EmailTemplateId = campaignData.EmailTemplateId
                };

                _backgroundJobManager.Enqueue <EmailCampaignSender>(e => e.SendEmail(data));

                campaignData.Contacts.RemoveRange(0, top.Count);
            }
        }