예제 #1
0
 /// <summary>
 /// Send sms message
 /// </summary>
 /// <param name="smsAccount">Sms account</param>
 /// <param name="messageTemplate">Message template</param>
 /// <param name="message">Message</param>
 /// <param name="smsTag">Sms tag</param>
 /// <param name="mobiles">Mobiles</param>
 /// <param name="asynchronously">Whether send by asynchronously</param>
 /// <returns>Return send result</returns>
 public static SendMessageResult SendSmsMessage(SmsAccount smsAccount, MessageTemplate messageTemplate, MessageInfo message, string smsTag, IEnumerable <string> mobiles, bool asynchronously = true)
 {
     return(SendSmsMessageAsync(smsAccount, messageTemplate, message, smsTag, mobiles, asynchronously).Result);
 }
예제 #2
0
        /// <summary>
        /// Send sms message
        /// </summary>
        /// <param name="smsAccount">Sms account</param>
        /// <param name="messageTemplate">Message template</param>
        /// <param name="message">Message</param>
        /// <param name="smsTag">Sms tag</param>
        /// <param name="mobiles">Mobiles</param>
        /// <param name="asynchronously">Whether send by asynchronously</param>
        /// <returns>Return send result</returns>
        public static async Task <SendMessageResult> SendSmsMessageAsync(SmsAccount smsAccount, MessageTemplate messageTemplate, MessageInfo message, string smsTag, IEnumerable <string> mobiles, bool asynchronously = true)
        {
            var msgResult = GetSmsOptions(messageTemplate, message, smsTag, mobiles, asynchronously, out var smsOptions);

            if (!msgResult.Success || smsOptions == null)
            {
                return(msgResult);
            }
            SendSmsResult smsSendResult = await SmsManager.SendAsync(smsAccount, smsOptions).ConfigureAwait(false);

            return(smsSendResult.Success ? SendMessageResult.SendSuccess() : SendMessageResult.SendFailed(smsSendResult.Description));
        }
예제 #3
0
        static SendMessageResult GetEmailOptions(MessageTemplate messageTemplate, MessageInfo message, string emailCategory, IEnumerable <string> emails, bool asynchronously, out SendEmailOptions sendEmailOptions)
        {
            sendEmailOptions = null;
            if (messageTemplate == null)
            {
                throw new ArgumentNullException(nameof(MessageTemplate));
            }
            if (message == null)
            {
                throw new ArgumentNullException(nameof(MessageInfo));
            }
            if (string.IsNullOrWhiteSpace(messageTemplate.Title))
            {
                throw new Exception("The message template title is null or empty");
            }
            if (string.IsNullOrWhiteSpace(messageTemplate.Content))
            {
                throw new Exception("The message template content is null or empty");
            }
            if (emails.IsNullOrEmpty())
            {
                throw new Exception("The emails is null or empty");
            }
            var parameterDict = message.Parameters?.ObjectToStringDcitionary();
            Dictionary <string, string> templateParameters = GetTemplateParameters(parameterDict);

            //title
            var titleResolveResult = ResolveTemplate(messageTemplate.Title, templateParameters);

            if (!titleResolveResult.Item1 || string.IsNullOrWhiteSpace(titleResolveResult.Item3))
            {
                if (!string.IsNullOrWhiteSpace(titleResolveResult.Item2))
                {
                    return(SendMessageResult.NoParameter($"Not set '{titleResolveResult.Item2}' value in the email title template"));
                }
                return(SendMessageResult.MessageIsNullOrEmpty($"The email title is null or empty"));
            }

            //content
            var contentResolveResult = ResolveTemplate(messageTemplate.Content, templateParameters);

            if (!contentResolveResult.Item1 || string.IsNullOrWhiteSpace(contentResolveResult.Item3))
            {
                if (!string.IsNullOrWhiteSpace(contentResolveResult.Item2))
                {
                    return(SendMessageResult.NoParameter($"Not set '{contentResolveResult.Item2}' value in the email body template"));
                }
                return(SendMessageResult.MessageIsNullOrEmpty($"The email body is null or empty"));
            }

            //Send email
            sendEmailOptions = new SendEmailOptions()
            {
                Category       = emailCategory,
                Content        = contentResolveResult.Item3,
                Subject        = titleResolveResult.Item3,
                Asynchronously = asynchronously,
                Emails         = emails
            };
            sendEmailOptions.AddWorkId(message.WorkId);
            sendEmailOptions.AddTemplateMessageId(message.Id);
            return(SendMessageResult.SendSuccess());
        }
예제 #4
0
 /// <summary>
 /// Send email message
 /// </summary>
 /// <param name="emailAccount">Email account</param>
 /// <param name="messageTemplate">Message template</param>
 /// <param name="message">Message</param>
 /// <param name="emailCategory">Email category</param>
 /// <param name="emails">Emails</param>
 /// <param name="asynchronously">Whether send by asynchronously</param>
 /// <returns>Return send result</returns>
 public static SendMessageResult SendEmailMessage(EmailAccount emailAccount, MessageTemplate messageTemplate, MessageInfo message, string emailCategory, IEnumerable <string> emails, bool asynchronously = true)
 {
     return(SendEmailMessageAsync(emailAccount, messageTemplate, message, emailCategory, emails, asynchronously).Result);
 }
예제 #5
0
        /// <summary>
        /// Send email message
        /// </summary>
        /// <param name="emailAccount">Email account</param>
        /// <param name="messageTemplate">Message template</param>
        /// <param name="message">Message</param>
        /// <param name="emailCategory">Email category</param>
        /// <param name="emails">Emails</param>
        /// <param name="asynchronously">Whether send by asynchronously</param>
        /// <returns>Return send result</returns>
        public static async Task <SendMessageResult> SendEmailMessageAsync(EmailAccount emailAccount, MessageTemplate messageTemplate, MessageInfo message, string emailCategory, IEnumerable <string> emails, bool asynchronously = true)
        {
            var msgResult = GetEmailOptions(messageTemplate, message, emailCategory, emails, asynchronously, out var emailOptions);

            if (!msgResult.Success || emailOptions == null)
            {
                return(msgResult);
            }
            SendEmailResult emailSendResult = (await EmailManager.SendAsync(emailAccount, emailOptions).ConfigureAwait(false))?.FirstOrDefault();

            return((emailSendResult?.Success ?? false) ? SendMessageResult.SendSuccess() : SendMessageResult.SendFailed(emailSendResult?.Message));
        }
예제 #6
0
 /// <summary>
 /// Direct send message
 /// </summary>
 /// <param name="message">message</param>
 /// <returns>Return send result</returns>
 public static SendMessageResult DirectSend(MessageInfo message)
 {
     return(DirectSendAsync(message).Result);
 }