/// <summary>
        /// Returns personal macros of the contact.
        /// </summary>
        /// <param name="recipient">Recipient.</param>
        /// <param name="macrosCollection">Collection of macros.</param>
        /// <returns>The recipient macros.</returns>
        public rcpt_merge_var GetPersonalMergeVars(IMessageRecipientInfo recipient,
                                                   IEnumerable <MacrosInfo> macrosCollection)
        {
            Dictionary <string, string> macrosValues = GetPersonalMacrosValues(recipient.ContactId, macrosCollection);

            return(CreateRecipientMergeVars(recipient, macrosValues));
        }
        /// <summary>
        /// Validates the sender email from the FromEmailMacro.
        /// </summary>
        /// <param name="recipient">Recipient of bulk email.</param>
        protected override void InternalValidate(IMessageRecipientInfo recipient)
        {
            var valueFromEmail = GetMacroValueFromRecipient(recipient, MailingConsts.FromEmailMacroKey);

            if (valueFromEmail != null && !MailingUtilities.ValidateEmail(valueFromEmail.Value.MacroValue))
            {
                recipient.InitialResponseCode = (int)MailingResponseCode.CanceledSendersDomainNotVerified;
            }
        }
        /// <summary>
        /// Validates the sender name from the FromNameMacro.
        /// </summary>
        /// <param name="recipient">Recipient of bulk email.</param>
        protected override void InternalValidate(IMessageRecipientInfo recipient)
        {
            var valueFromName = GetMacroValueFromRecipient(recipient, MailingConsts.FromNameMacroKey);

            if (valueFromName != null && valueFromName.Value.MacroValue == string.Empty)
            {
                recipient.InitialResponseCode = (int)MailingResponseCode.CanceledSendersNameNotValid;
            }
        }
예제 #4
0
 /// <summary>
 /// Validates by custom rule.
 /// </summary>
 /// <param name="recipient">Recipient of bulk email.</param>
 public void Validate(IMessageRecipientInfo recipient)
 {
     if (!(recipient is IDCRecipientInfo))
     {
         return;
     }
     if (recipient.InitialResponseCode == (int)MailingResponseCode.PostedProvider)
     {
         InternalValidate(recipient);
     }
 }
예제 #5
0
        /// <summary>
        /// Validates the sender email from the FromEmailMacro.
        /// </summary>
        /// <param name="recipient">Recipient of bulk email.</param>
        protected override void InternalValidate(IMessageRecipientInfo recipient)
        {
            var valueFromEmail = GetMacroValueFromRecipient(recipient, MailingConsts.FromEmailMacroKey);

            if (valueFromEmail == null)
            {
                return;
            }
            var domain = DefineDomainFromEmailAddress(valueFromEmail.Value.MacroValue);

            if (domain == null || !_validDomains.Value.Contains(domain))
            {
                recipient.InitialResponseCode = (int)MailingResponseCode.CanceledSendersDomainNotVerified;
            }
        }
        public List <rcpt_merge_var> GetPersonalMergeVars(Select select,
                                                          Dictionary <Guid, IMessageRecipientInfo> contactCollection, IEnumerable <MacrosInfo> macrosCollection)
        {
            List <rcpt_merge_var> personalMergeVars = new List <rcpt_merge_var>();
            Dictionary <object, Dictionary <string, string> > results = GetPersonalMacrosValues(select, macrosCollection);

            foreach (KeyValuePair <object, Dictionary <string, string> > result in results)
            {
                Guid contactId = (Guid)result.Key;
                Dictionary <string, string> macrosValues = result.Value;
                if (contactCollection.ContainsKey(contactId))
                {
                    IMessageRecipientInfo recipient        = contactCollection[contactId];
                    rcpt_merge_var        personalMergeVar = CreateRecipientMergeVars(recipient, macrosValues);
                    personalMergeVars.Add(personalMergeVar);
                }
            }
            return(personalMergeVars);
        }
        /// <summary>
        /// Creates macros variables for recipient template.
        /// </summary>
        /// <param name="recipient">Recipient information. Contains contact identifier, recipient identifier.</param>
        /// <param name="macrosValues">Macros values.</param>
        /// <returns>Macros variables for recipient template.</returns>
        private rcpt_merge_var CreateRecipientMergeVars(IMessageRecipientInfo recipient,
                                                        Dictionary <string, string> macrosValues)
        {
            rcpt_merge_var personalMergeVar = new rcpt_merge_var();

            foreach (KeyValuePair <string, string> macros in macrosValues)
            {
                personalMergeVar.vars.Add(CreateMergeVar(macros.Key, macros.Value));
            }
            personalMergeVar.vars.Add(CreateMergeVar(
                                          BulkEmailHyperlinkHelper.ContactIdMacrosName,
                                          recipient.ContactId.ToString()
                                          ));
            personalMergeVar.vars.Add(CreateMergeVar(
                                          BulkEmailHyperlinkHelper.BulkEmailRecipientIdName,
                                          recipient.Id.ToString()
                                          ));
            personalMergeVar.rcpt = recipient.EmailAddress;
            return(personalMergeVar);
        }
예제 #8
0
 /// <summary>
 /// Abstract method for validation by custom rule.
 /// </summary>
 /// <param name="recipient">Recipient of bulk email.</param>
 protected abstract void InternalValidate(IMessageRecipientInfo recipient);
예제 #9
0
        /// <summary>
        /// Gets value macro from recipient.
        /// </summary>
        /// <param name="recipient">Recipient of bulk email.</param>
        /// <param name="alias">Alias macro.</param>
        /// <returns>Value from macro.</returns>
        protected virtual (string Alias, string MacroValue)? GetMacroValueFromRecipient(IMessageRecipientInfo recipient, string alias)
        {
            var recipientItem = recipient as IDCRecipientInfo;

            if (recipientItem != null && recipientItem.Macros.ContainsKey(alias))
            {
                return(Alias : alias, MacroValue : recipientItem.Macros[alias]);
            }
            return(null);
        }