public override async Task <MailAdapterResult> SendMailAsync(MailData mail, CancellationToken cancellationToken)
        {
            if (!this.configurationCorrect)
            {
                return(MailAdapterResult.InfrastructuralError);
            }
            try
            {
                MailMessage mailMessage = CreateMailMessage(mail);

                var client  = new RestClient(this.sendMailUri);
                var request = new RestRequest(Method.POST);
                request.AddHeader("content-type", "application/json");
                request.AddHeader("authorization", $"Bearer {this.apiKey}");
                request.AddParameter("application/json",
                                     JsonConvert.SerializeObject(mailMessage), ParameterType.RequestBody);
                var response = await client.ExecuteTaskAsync(request);

                if (response.StatusCode != System.Net.HttpStatusCode.Accepted)
                {
                    return(MailAdapterResult.NotInfrastructuralError);
                }
            }
            catch (Exception)
            {
                return(MailAdapterResult.NotInfrastructuralError);
            }
            return(MailAdapterResult.Ok);
        }
        private MailMessage CreateMailMessage(MailData mailData)
        {
            var mailMessage     = new MailMessage();
            var personalization = new Personalization();

            personalization.subject = mailData.Subject;
            if (mailData.TOAddresses != null && mailData.TOAddresses.Any())
            {
                personalization.to = new List <To>();
                foreach (var address in mailData.TOAddresses)
                {
                    personalization.to.Add(new To()
                    {
                        email = address
                    });
                }
            }

            if (mailData.BccAddresses != null && mailData.BccAddresses.Any())
            {
                personalization.bcc = new List <Bcc>();
                foreach (var address in mailData.BccAddresses)
                {
                    personalization.bcc.Add(new Bcc()
                    {
                        email = address
                    });
                }
            }
            if (mailData.CCAddresses != null && mailData.CCAddresses.Any())
            {
                personalization.cc = new List <Cc>();
                foreach (var address in mailData.CCAddresses)
                {
                    personalization.cc.Add(new Cc()
                    {
                        email = address
                    });
                }
            }
            mailMessage.personalizations = new List <Personalization>();
            mailMessage.personalizations.Add(personalization);
            mailMessage.from = new From()
            {
                email = mailData.From ?? this.fromAddress
            };
            mailMessage.content = new List <Content>();
            mailMessage.content.Add(new Content()
            {
                type  = mailData.IsHtml ? "text/html" : "text/plain",
                value = mailData.Body
            });
            return(mailMessage);
        }
Beispiel #3
0
        private async Task SendCallbackToCallerActorAsync(MailData mailData, MailAdapterResult sendResult, CancellationToken cancellationToken)
        {
            if (mailData.CallBack != null)
            {
                try
                {
                    var callbackProxy = this.actorFactory.Create <ICallBackMailService>(new ActorId(mailData.CallBack.ActorId),
                                                                                        new Uri(mailData.CallBack.ServiceUri));

                    await callbackProxy.MailSendCompletedAsync(mailData.Id, sendResult.ToMailSendResult(), cancellationToken);
                }
                catch
                {
                }
            }
        }
Beispiel #4
0
        public async Task <MailServiceError> SendMailAsync(MailInfo mail, CallBackInfo callback, CancellationToken cancellationToken)
        {
            if (mail == null)
            {
                throw new ArgumentNullException(nameof(mail));
            }

            MailServiceError checkMail = mail.Check();

            if (checkMail == MailServiceError.Ok)
            {
                MailData mailData = new MailData(mail, callback);
                using (var trx = this.StateManager.CreateTransaction())
                {
                    await this.mailQueue.EnqueueAsync(trx, mailData);

                    await trx.CommitAsync();
                }
            }
            return(checkMail);
        }
 public abstract Task <MailAdapterResult> SendMailAsync(MailData mail, CancellationToken cancellationToken);
Beispiel #6
0
        public override async Task <MailAdapterResult> SendMailAsync(MailData mail, CancellationToken cancellationToken)
        {
            await Task.Delay(1000, cancellationToken);

            return(MailAdapterResult.Ok);
        }