Example #1
0
        protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            using (var stream = await request.Content.ReadAsStreamAsync())
            {
                var parameters = MultipartFormDataParser.Parse(stream);
                var from       = parameters.Parameters.Where(x => x.Name == "from")
                                 .Select(x => GetSingleMailAddress(x.Data))
                                 .FirstOrDefault();

                var tos = parameters.Parameters.Where(x => x.Name == "to")
                          .Select(x => GetMultipleMailAddress(x.Data));

                var mailGunResponse = new MailGunResponse();

                if (from == _validSenderMailAddress && tos.Any(x => x.Contains(_validRecipientMailAddress)))
                {
                    mailGunResponse.Id      = "<fake-domain.mailgun.org>";
                    mailGunResponse.Message = "Queued. Thank you.";
                }
                else
                {
                    mailGunResponse.Id = string.Empty;
                }

                var httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK);
                httpResponseMessage.Content = new ReadOnlyMemoryContent(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(mailGunResponse)));
                return(httpResponseMessage);
            }
        }
Example #2
0
        public bool SendMail(IMail mail, List <MailAttachments> lst)
        {
            mail.Map();
            mail.Fill();
            MailGunResponse result = sendEmail(mail.GetMail(), lst);

            if (!string.IsNullOrEmpty(result.id))
            {
                return(true);
            }
            return(false);
        }
Example #3
0
        public bool SendMail(IMail mail)
        {
            mail.Map();
            mail.Fill();
            MailGunResponse result = sendEmail(mail.GetMail(), null);

            if (!string.IsNullOrEmpty(result.id))
            {
                return(true);
            }
            return(false);
        }
Example #4
0
        private MailGunResponse sendEmail(MailParameters parameters, List <MailAttachments> attachments)
        {
            //parameters for the api request
            var APIMainUri         = SystemVariableServ.GetSystemVariableValue("EmailApiUrl");
            var MailgunDomain      = SystemVariableServ.GetSystemVariableValue("EmailApiDomain");
            var APIMessageEndpoint = SystemVariableServ.GetSystemVariableValue("EmailApiMessageEndpoint");
            var APIUser            = SystemVariableServ.GetSystemVariableValue("EmailApiUsername");
            var APIKey             = SystemVariableServ.GetSystemVariableValue("EmailApiKey");

            RestClient client = new RestClient();

            client.BaseUrl       = new Uri(APIMainUri);
            client.Authenticator = new HttpBasicAuthenticator(APIUser, APIKey);

            RestRequest request = new RestRequest();

            request.Method = Method.POST;
            request.AddParameter("domain", MailgunDomain, ParameterType.UrlSegment);
            request.Resource = "{domain}" + APIMessageEndpoint;

            if (parameters != null)
            {
                foreach (PropertyInfo cProperty in parameters.GetType().GetProperties())
                {
                    var cPropertyName  = cProperty.Name;
                    var cPropertyValue = cProperty.GetValue(parameters);
                    if (cPropertyValue != null)
                    {
                        request.AddParameter(cPropertyName, cPropertyValue);
                    }
                    ;
                }
            }

            if (attachments != null && attachments.Count > 0)
            {
                foreach (var cAttachment in attachments.ToList())
                {
                    request.AddFileBytes("attachment", cAttachment.file, cAttachment.fileName, (cAttachment.contentType));
                }
            }

            //IRestResponse response = client.Execute(request);
            //MailGunResponse result = Deserializer.Deserialize<MailGunResponse>(response.Content);

            MailGunResponse result = new MailGunResponse();

            result.id = "set by async funtionality";
            var Asyncresult = client.ExecuteAsync <MailGunResponse>(request, response => { });

            return(result);
        }
Example #5
0
        public bool wellcomeEmail(string Email)
        {
            //variables
            string HtmlBody          = string.Empty;
            string Subject           = string.Empty;
            string From              = SystemVariableServ.GetSystemVariableValue("EmailApiEmail");
            string EmailMainTemplate = EmailTemplateServ.getMasterEmailTemplate("EmailEgulfBasicTemplate");

            //instances
            CustomTemplateModel CustomTemplate = new CustomTemplateModel();
            List <CustomTemplateSectionModel> CustomTemplateSections = new List <CustomTemplateSectionModel>();

            //we get email templates
            CustomTemplate         = EmailTemplateServ.getCustomTemplate(null, "WellcomeTemplate");
            CustomTemplateSections = EmailTemplateServ.getCustomTemplateSections(CustomTemplate.CustomTemplateId);

            //we load basic template things and remove innecesary stuffs
            EmailMainTemplate = getReadyMainTemplate(EmailMainTemplate);
            EmailMainTemplate = removeTable(EmailMainTemplate);

            //we get template custom sections
            EmailMainTemplate = buildTemplateSections(EmailMainTemplate, CustomTemplateSections);
            EmailMainTemplate = EmailMainTemplate.Replace("#btn-url#", "");
            EmailMainTemplate = EmailMainTemplate.Replace("#btn-start#", "");
            EmailMainTemplate = EmailMainTemplate.Replace("#btn-end#", "");

            HtmlBody = EmailMainTemplate;
            Subject  = CustomTemplate.Subject;

            MailParameters parameters = new MailParameters();

            parameters.from    = From;
            parameters.to      = Email;
            parameters.subject = Subject;
            parameters.html    = HtmlBody;

            MailGunResponse result = sendEmail(parameters, null);

            if (!string.IsNullOrEmpty(result.id))
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }