private void ApplyTemplate(string templateId, SendGridEmailMessage emailMessage, params EmailTemplateParameter[] parameters) { emailMessage.Content = null; emailMessage.TemplateId = templateId; var personalization = emailMessage.Personalizations.First(); foreach (var parameter in parameters) { var parameterValue = string.Format("{0}", parameter.Values.FirstOrDefault()); personalization.Substitutions[$"-{parameter.ReplacementTag}-"] = parameterValue; } }
protected void Configure(IApplicationBuilder app, IHostApplicationLifetime appLifetime, SharedOptions option) { var emailNotify = app.ApplicationServices.GetRequiredService <IEmailNotify>(); appLifetime.ApplicationStarted.Register(async() => { if (!CurrentEnv.IsDevelopment()) { var message = new SendGridEmailMessage { Content = "<p>恭喜,网站已经运行起来了!</p>", Site = Site, Subject = "site started", SendGridApiKey = option.SendGridApiKey, ToEmailAddress = option.AdminEmail, ToName = option.AdminEnglishName }; await emailNotify.SendAsync(message); } }); appLifetime.ApplicationStopping.Register(async() => { if (!CurrentEnv.IsDevelopment()) { var message = new SendGridEmailMessage { Content = "<p>网站被停掉了,请确认是否是正常行为。</p>", Site = Site, Subject = "site stopped", SendGridApiKey = option.SendGridApiKey, ToEmailAddress = option.AdminEmail, ToName = option.AdminEnglishName }; await emailNotify.SendAsync(message); } }); if (CurrentEnv.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/error"); } }
public async Task SendMessageAsync(SendGridEmailMessage message) { _httpClient.DefaultRequestHeaders.Remove("Authorization"); _httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {_sendGridSettings.ApiKey}"); Logger.Information("Sending an email message via SendGrid."); var payload = JsonConvert.SerializeObject(message); var content = new StringContent(payload, Encoding.UTF8, "application/json"); var response = await _httpClient.PostAsync("mail/send", content); if (response.IsSuccessStatusCode) { Logger.Information("An email message has been sent successfully via SendGrid."); return; } throw new ServiceException(OperationCodes.EmailNotSent, "There was an error while sending an email message via SendGrid." + $"Status code: {response.StatusCode}, reason: {response.ReasonPhrase}."); }
private SendGridEmailMessage CreateMessage(string receiver, string subject, string message = null, string sender = null) { var emailMessage = new SendGridEmailMessage { From = new SendGridEmailMessage.Person { Email = sender.Empty() ? _sendGridSettings.NoReplyEmailAccount : sender }, Subject = subject, Personalizations = new List <SendGridEmailMessage.Personalization>() }; emailMessage.Personalizations.Add(new SendGridEmailMessage.Personalization { To = new List <SendGridEmailMessage.Person> { new SendGridEmailMessage.Person { Email = receiver } }, Substitutions = new Dictionary <string, string>() }); if (message.NotEmpty()) { emailMessage.Content = new List <SendGridEmailMessage.MessageContent>() { new SendGridEmailMessage.MessageContent { Value = message } }; } return(emailMessage); }