コード例 #1
0
        private async Task HandleException(HttpContext httpContext, Exception ex)
        {
            httpContext.Response.StatusCode  = 500;
            httpContext.Response.ContentType = "text/json;charset=utf-8";
            string error = string.Empty;

#if DEBUG
            var json = new { message = ex.Message, trace = ex.StackTrace };
            error = JsonConvert.SerializeObject(json);
#elif RELEASE
            error = "出错了";
            var json = new { message = ex.Message, trace = ex.StackTrace };
#endif

            NLogHelper.GetLogger().Info(error);
            //rabbitmq就绪 json
            var post = new SendEmailOptions
            {
                title   = "位置异常",
                content = JsonConvert.SerializeObject(json)
            };
            if (ex.Message == "NotAllowed")
            {
                await httpContext.Response.WriteAsync(ex.Message);
            }
            else
            {
                this.SendErrorEmail(post);
                await httpContext.Response.WriteAsync(error);
            }
        }
コード例 #2
0
        public static IServiceCollection AddSendEmail(this IServiceCollection services, Action <SendEmailOptions> options)
        {
            SendEmailOptions sendEmailOptions = new SendEmailOptions();

            options.Invoke(sendEmailOptions);

            if (string.IsNullOrWhiteSpace(sendEmailOptions.MailSmtp) && string.IsNullOrWhiteSpace(sendEmailOptions.MailSmtpIP))
            {
                throw new ArgumentNullException($"{nameof(sendEmailOptions.MailSmtp)} or {nameof(sendEmailOptions.MailSmtpIP)}");
            }

            if (string.IsNullOrWhiteSpace(sendEmailOptions.MailAccount))
            {
                throw new ArgumentNullException(nameof(sendEmailOptions.MailAccount));
            }

            if (string.IsNullOrWhiteSpace(sendEmailOptions.MailPassWord))
            {
                throw new ArgumentNullException(nameof(sendEmailOptions.MailPassWord));
            }

            services.AddTransient <ISendEmail>(srviceProvider => new SendEmail(sendEmailOptions));

            return(services);
        }
        public SendEmailOptions GetSendMailOptions(int userid, TemplateContext templateContext)
        {
            var mailOptions = new SendEmailOptions()
            {
                ToUserId = userid,
                Header   = _templateController.RenderTokenString(EmailTarget.Header.ToTemplateTypeString(), templateContext),
                Footer   = _templateController.RenderTokenString(EmailTarget.Footer.ToTemplateTypeString(), templateContext),
                Subject  = _templateController.RenderTokenString(EmailTarget.Subject.ToTemplateTypeString(), templateContext),
                Body     = _templateController.RenderTokenString(EmailTarget.Body.ToTemplateTypeString(), templateContext),
            };

            return(mailOptions);
        }
コード例 #4
0
        public void CanSendEmail_ThenReceiveIt()
        {
            // first configure your api key
            var config = new Configuration();

            config.ApiKey.Add("x-api-key", YourApiKey);

            // create two inboxes
            var apiInstance = new InboxControllerApi(config);
            var inbox1      = apiInstance.CreateInbox();
            var inbox2      = apiInstance.CreateInbox();

            Assert.NotEqual(inbox1.EmailAddress, inbox2.EmailAddress);

            // send email from inbox1 to inbox2
            var sendEmailOptions = new SendEmailOptions()
            {
                To = new List <string>()
                {
                    inbox2.EmailAddress
                },
                Subject = "Hello inbox2",
                Body    = "Your code is: 123"
            };

            apiInstance.SendEmail(inbox1.Id, sendEmailOptions);

            // wait for email in inbox2 and read it
            var waitForInstance = new WaitForControllerApi(config);
            var email           = waitForInstance.WaitForLatestEmail(inbox2.Id, Timeout, UnreadOnly);

            Assert.NotNull(email);
            Assert.Equal(inbox1.EmailAddress, email.From);
            Assert.Equal("Hello inbox2", email.Subject);
            Assert.Contains("Your code is: ", email.Body);

            // extract a code from email body
            var rx    = new Regex(@"Your code is: ([0-9]{3})", RegexOptions.Compiled);
            var match = rx.Match(email.Body);
            var code  = match.Groups[1].Value;

            Assert.Equal("123", code);
        }
コード例 #5
0
ファイル: eMail.cs プロジェクト: radtek/mcebuddyviewer
        /// <summary>
        /// Call back handler for aSynchronous eMail, checks for success or failure of email sending
        /// </summary>
        private static void eMailClient_SendCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
        {
            SendEmailOptions userState = (SendEmailOptions)e.UserState;

            if (userState == null)
            {
                return;
            }

            if (e.Error == null)
            {
                userState.jobLog.WriteEntry(Localise.GetPhrase("Successfully send eMail"), Log.LogEntryType.Information, true);
            }
            else
            {
                userState.jobLog.WriteEntry(Localise.GetPhrase("Error sending eMail") + " -> " + e.ToString(), Log.LogEntryType.Error, true);
            }

            return;
        }
コード例 #6
0
 protected void SendErrorEmail(SendEmailOptions sendEmailOptions)
 {
     try
     {
         sendEmailOptions.sendTo = string.IsNullOrEmpty(sendEmailOptions.sendTo) ?
                                   _appSettings.Value.MainEmail.UserAddress : sendEmailOptions.sendTo;
         var succ = GK2823.BizLib.Shared.RabbitMQHelper.Send(
             _appSettings.Value.MQHandle.DefaultQueue.QueueName,
             System.Text.Json.JsonSerializer.Serialize(sendEmailOptions),
             _appSettings.Value.MQHandle.DefaultQueue.MQFunction.SendEmail);
         if (!succ)
         {
             throw (new Exception("自定义消息队列异常-From Web"));
         }
     }
     catch (Exception ex)
     {
         NLogHelper.GetLogger().Info("消息队列异常-From Web:" + ex.Message + ex.StackTrace);
         AutofacContainer.Resolve <Service_xuangubao>().SendEmail(sendEmailOptions.sendTo, sendEmailOptions.title, sendEmailOptions.content);
     }
 }
コード例 #7
0
        private async Task HandleException(HttpContext httpContext, Exception ex)
        {
            httpContext.Response.StatusCode  = 500;
            httpContext.Response.ContentType = "text/json;charset=utf-8";
            string error = string.Empty;

#if DEBUG
            var json = new { message = ex.Message, trace = ex.StackTrace };
            error = JsonConvert.SerializeObject(json);
#elif RELEASE
            error = "出错了";
            var json = new { message = ex.Message, trace = ex.StackTrace };
#endif
            NLogHelper.GetLogger().Info(error);
            //rabbitmq就绪 json
            var post = new SendEmailOptions
            {
                title   = "位置异常",
                content = JsonConvert.SerializeObject(json)
            };
            if (ex.Message == "NotAllowed")
            {
                await httpContext.Response.WriteAsync(ex.Message);
            }
            else if (ex.Message == ((int)System.Net.HttpStatusCode.Unauthorized).ToString())
            {
                var msg = new MsgResult();
                msg.code = (int)System.Net.HttpStatusCode.Unauthorized;
                msg.data = "请登录";
                httpContext.Response.StatusCode = 401;
                await httpContext.Response.WriteAsync(JsonConvert.SerializeObject(msg));
            }
            else
            {
#if RELEASE
                this.SendErrorEmail(post);
#endif
                await httpContext.Response.WriteAsync(error);
            }
        }
 public SendEmailOptions GetSendMailOptions(int userid, TemplateContext templateContext)
 {
     var mailOptions = new SendEmailOptions()
     {
         ToUserId = userid,
         Header = _templateController.RenderTokenString(EmailTarget.Header.ToTemplateTypeString(), templateContext),
         Footer = _templateController.RenderTokenString(EmailTarget.Footer.ToTemplateTypeString(), templateContext),
         Subject = _templateController.RenderTokenString(EmailTarget.Subject.ToTemplateTypeString(), templateContext),
         Body = _templateController.RenderTokenString(EmailTarget.Body.ToTemplateTypeString(), templateContext),
     };
     return mailOptions;
 }
コード例 #9
0
ファイル: eMail.cs プロジェクト: radtek/mcebuddyviewer
 /// <summary>
 /// Send an eMail synchronously or asynchronously (depending upon options passed)
 /// </summary>
 /// <param name="eMailOptions">eMail User State options</param>
 /// <returns>True if email is sent successfuly</returns>
 public static bool SendEMail(SendEmailOptions eMailOptions)
 {
     return(SendEMail(eMailOptions.eMailSettings, eMailOptions.subject, eMailOptions.message, eMailOptions.jobLog, eMailOptions.asyncCallBackHandler, eMailOptions.forceAysncCallBack));
 }
コード例 #10
0
ファイル: eMail.cs プロジェクト: hoeness2/mcebuddy2
 /// <summary>
 /// Send an eMail synchronously or asynchronously (depending upon options passed)
 /// </summary>
 /// <param name="eMailOptions">eMail User State options</param>
 /// <returns>True if email is sent successfuly</returns>
 public static bool SendEMail(SendEmailOptions eMailOptions)
 {
     return SendEMail(eMailOptions.eMailSettings, eMailOptions.subject, eMailOptions.message, eMailOptions.jobLog, eMailOptions.asyncCallBackHandler, eMailOptions.forceAysncCallBack);
 }
コード例 #11
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());
        }