Beispiel #1
0
        public async Task Send(BulkEmailDto dto)
        {
            using (var tokenResponse = await HttpHelper.SendRequest(HttpMethod.Post, _smartMail.AuthApiUrl, null, new { username = _smartMail.Email, password = _smartMail.Password }))
            {
                var tokenResult = await tokenResponse.Content.ReadAsStringAsync();

                var tokenData = JsonConvert.DeserializeObject <SmartMailUserAuthentication>(tokenResult);
                _token = tokenData.AccessToken;
                var logs = new List <EmailLog>();
                foreach (var item in dto.Mails)
                {
                    var log = new EmailLog
                    {
                        AppId         = dto.AppId,
                        CustomerId    = dto.CustomerId,
                        RecipientName = item.RecipientName,
                        Email         = item.RecipientEmail,
                        Message       = item.Message,
                        Subject       = item.Subject,
                        StatusCode    = 200
                    };
                    try
                    {
                        var messageHTML = generateMailBody(item.RecipientName, item.Message);
                        var content     = new EmailContentDto(item.RecipientEmail, item.Subject, messageHTML);
                        using (var mailResponse = await HttpHelper.SendRequest(HttpMethod.Post, _smartMail.SendEmailApiUrl, tokenData.AccessToken, content))
                        {
                            if (!mailResponse.IsSuccessStatusCode)
                            {
                                log.StatusCode       = (int)mailResponse.StatusCode;
                                log.ExceptionMessage = await mailResponse.Content.ReadAsStringAsync();
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        log.StatusCode       = 400;
                        log.ExceptionMessage = ex.ToString();
                    }
                    logs.Add(log);
                }
                await _repository.Insert(logs);
            }
        }
        public async Task <IActionResult> Post([FromBody] BulkEmailDto dto)
        {
            await _service.Send(dto);

            return(Ok());
        }