예제 #1
0
        public async Task <bool> IsConfigured(string configLookupKey = null)
        {
            if (options == null)
            {
                options = await _optionsProvider.GetMailgunOptions(configLookupKey);
            }

            if (options == null || string.IsNullOrWhiteSpace(options.ApiKey) || string.IsNullOrWhiteSpace(options.EndpointUrl))
            {
                return(false);
            }
            return(true);
        }
예제 #2
0
        public async Task <EmailSendResult> SendWithAttachments(
            List <KeyValuePair <string, string> > keyValues,
            MailgunOptions options,
            string subject,
            List <ByteArrayContent> files
            )
        {
            var client = _httpClientFactory.GetOrCreateHttpClient(new Uri(options.EndpointUrl));

            using (var formData = new MultipartFormDataContent())
            {
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
                                                                                           Convert.ToBase64String(Encoding.ASCII.GetBytes(PrefixApiKey(options.ApiKey))));

                foreach (var item in keyValues)
                {
                    HttpContent stringContent = new StringContent(item.Value);
                    formData.Add(stringContent, item.Key);
                }

                foreach (var file in files)
                {
                    formData.Add(file);
                }

                try
                {
                    var response = await client.PostAsync("messages", formData);

                    var result = await response.Content.ReadAsStringAsync();

                    if (!response.IsSuccessStatusCode)
                    {
                        var message = $"failed to send email with subject {subject} error was {response.StatusCode} : {result}";
                        _log.LogError(message);
                        return(new EmailSendResult(false, message));
                    }
                }
                catch (Exception ex)
                {
                    var message = $"failed to send email with subject {subject} error was {ex.Message} : {ex.StackTrace}";
                    _log.LogError(message);
                    return(new EmailSendResult(false, message));
                }

                return(new EmailSendResult(true));
            }
        }
예제 #3
0
        private async Task <EmailSendResult> SendWithoutAttachments(List <KeyValuePair <string, string> > keyValues, MailgunOptions options, string subject)
        {
            var client = _httpClientFactory.GetOrCreateHttpClient(new Uri(options.EndpointUrl));

            client.DefaultRequestHeaders.Authorization =
                new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.ASCII.GetBytes(PrefixApiKey(options.ApiKey))));

            var content = new FormUrlEncodedContent(keyValues);

            try
            {
                var response = await client.PostAsync("messages", content).ConfigureAwait(false);

                var result = await response.Content.ReadAsStringAsync();

                if (!response.IsSuccessStatusCode)
                {
                    var message = $"failed to send email with subject {subject} error was {response.StatusCode} : {result}";
                    _log.LogError(message);
                    return(new EmailSendResult(false, message));
                }
            }
            catch (Exception ex)
            {
                var message = $"failed to send email with subject {subject} error was {ex.Message} : {ex.StackTrace}";
                _log.LogError(message);
                return(new EmailSendResult(false, message));
            }

            return(new EmailSendResult(true));
        }