コード例 #1
0
        private SendTestMessageResult ExecuteDCTestMessageSending(SendTestMessageData data, BulkEmail bulkEmail,
                                                                  SendMessageData messageData, IEnumerable <DCReplicaModel> replicas)
        {
            var sentReplicaMasks   = new List <int>();
            var failedReplicaMasks = new List <int>();
            var templates          = TemplateFactory.CreateInstances(_userConnection, bulkEmail, replicas, BulkEmailMacroParser);
            var templatesWithMasks = templates.Select(t => new {
                Template    = t,
                ReplicaMask = replicas.First(replica => replica.Id == ((IMailingTemplateReplica)t).ReplicaId).Mask
            });
            var macroComposer = GetMacroComposer(data.ContactId, bulkEmail.Id);

            foreach (var template in templatesWithMasks)
            {
                var sentSuccessfully = SendTestMessageTemplate(bulkEmail.Id, data.ContactId, data.EmailRecipients,
                                                               template.Template, messageData, macroComposer);
                if (sentSuccessfully)
                {
                    sentReplicaMasks.Add(template.ReplicaMask);
                }
                else
                {
                    failedReplicaMasks.Add(template.ReplicaMask);
                }
            }
            if (data.ReplicaMasks == null)
            {
                return(new SendTestMessageResult {
                    Success = sentReplicaMasks.Count > 0,
                    SentReplicaMasks = sentReplicaMasks.ToArray(),
                    FailedReplicaMasks = failedReplicaMasks.ToArray()
                });
            }
            foreach (var mask in data.ReplicaMasks)
            {
                if (!sentReplicaMasks.Contains(mask) && !failedReplicaMasks.Contains(mask))
                {
                    failedReplicaMasks.Add(mask);
                }
            }
            return(new SendTestMessageResult {
                Success = sentReplicaMasks.Count > 0,
                SentReplicaMasks = sentReplicaMasks.ToArray(),
                FailedReplicaMasks = failedReplicaMasks.ToArray()
            });
        }
 protected IEnumerable <IMailingTemplate> CreateTemplates(BulkEmail bulkEmail, BulkEmailMacroParser macroParser,
                                                          IEnumerable <DCReplicaModel> replicasToProcess)
 {
     return(TemplateFactory.CreateInstances(UserConnection, bulkEmail, replicasToProcess, macroParser));
 }