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); }
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 { } } }
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);
public override async Task <MailAdapterResult> SendMailAsync(MailData mail, CancellationToken cancellationToken) { await Task.Delay(1000, cancellationToken); return(MailAdapterResult.Ok); }