Пример #1
0
        public async Task <HealthCheckResult> CheckHealthAsync(HealthCheckContext context, CancellationToken cancellationToken = default)
        {
            try
            {
                var client = new MailjetClient(_mailjetConfiguration.PublicApiKey, _mailjetConfiguration.PrivateApiKey);

                var email = new TransactionalEmail
                {
                    From           = new SendContact(_emailConfiguration.SenderAddress, _emailConfiguration.SenderName),
                    Subject        = "Health Check",
                    ReplyTo        = new SendContact(_emailConfiguration.ReplyToAddress, _emailConfiguration.SenderName),
                    CustomCampaign = _mailjetConfiguration.Campaign,
                    To             = new List <SendContact>
                    {
                        new SendContact("*****@*****.**")
                    },
                    TextPart = "This e-mail is sent from a health check and should never reach anybody."
                };

                await client.SendTransactionalEmailAsync(email, true);

                return(await Task.FromResult(HealthCheckResult.Healthy("Mailjet is healthy.")));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, $"Mailjet Healthcheck failed: {ex.Message}");
                return(await Task.FromResult(HealthCheckResult.Unhealthy("Mailjet is not healthy.")));
            }
        }
Пример #2
0
        public async Task SendEmail(TransactionalEmail template, string email, object data)
        {
            var message    = new SendGridMessage();
            var templateId = this.GetTemplateId(template);

            message.SetupNoReplyMessage(templateId, email, data);
            var result = await this.client.SendEmailAsync(message);
        }
Пример #3
0
        private string GetTemplateId(TransactionalEmail email)
        {
            switch (email)
            {
            case TransactionalEmail.TeamInvite:
                return(Shared.Configuration.SendGridTemplates.SendInvite);

            default:
                throw new Exception("Invalid Email Template");
            }
        }
        /// <inheritdoc/>
        public async Task <string> SendTransactionalEmail(TransactionalEmail email, CancellationToken cancellationToken)
        {
            var request = new RestRequest(Method.POST);

            request.Resource = $"smtp/email";
            request.AddHeader("accept", "application/json");
            var json = ToJson(email);

            request.AddParameter("application/json", json, ParameterType.RequestBody);

            var response = await client.ExecuteAsync <string>(request, cancellationToken);

            if (!response.IsSuccessful)
            {
                throw exceptionFactory.CreateException(response);
            }
            return(response.Data);
        }
Пример #5
0
        public async Task Send(string recipientAddress, string subject, string htmlBody, string textBody, params IEmailAttachment[] attachments)
        {
            if (string.IsNullOrWhiteSpace(recipientAddress))
            {
                throw new ArgumentOutOfRangeException(nameof(recipientAddress));
            }

            var client = new MailjetClient(_mailjetConfig.PublicApiKey, _mailjetConfig.PrivateApiKey);


            var email = new TransactionalEmail
            {
                From           = new SendContact(_emailConfig.SenderAddress, _emailConfig.SenderName),
                Subject        = subject,
                ReplyTo        = new SendContact(_emailConfig.ReplyToAddress, _emailConfig.SenderName),
                CustomCampaign = _mailjetConfig.Campaign,
                To             = new List <SendContact>
                {
                    new SendContact(recipientAddress)
                },
                TextPart    = textBody,
                HTMLPart    = htmlBody,
                Attachments = new List <Attachment>(),
            };

            foreach (var attachment in attachments)
            {
                new FileExtensionContentTypeProvider().TryGetContentType(attachment.Filename, out var contentType);
                email.Attachments.Add(new Attachment(attachment.Filename, contentType ?? "application/octet-stream", Convert.ToBase64String(attachment.Bytes)));
            }

            try
            {
                await client.SendTransactionalEmailAsync(email);
            }
            catch (Exception ex)
            {
                throw new Exception($"Sending email via MailJet failed.{Environment.NewLine}: {ex.Message}", ex);
            }
        }
Пример #6
0
 /// <summary>
 /// Sends a single transactional email using send API v3.1
 /// </summary>
 public Task <TransactionalEmailResponse> SendTransactionalEmailAsync(TransactionalEmail transactionalEmail, bool isSandboxMode = false, bool advanceErrorHandling = true)
 {
     return(SendTransactionalEmailsAsync(new[] { transactionalEmail }, isSandboxMode, advanceErrorHandling));
 }
Пример #7
0
 public Message(string recipient, TransactionalEmail type, T data) : base(recipient, type)
 {
     this.Data = data;
 }