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); } }
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); }
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); }
/// <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; }
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); } }
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; }
/// <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)); }
/// <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); }
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()); }