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); }
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)); } }
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)); }