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;
            }
        }
Ejemplo n.º 2
0
    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");
        }
    }
Ejemplo n.º 3
0
        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);
        }