Esempio n. 1
0
        public static async void EnviarMailRegistro(string nombreFranquicia, string from, string para, string nombrePara, string confirmKey,
            string nombre, string password)
        {
            MandrillApi api = new MandrillApi("aEBsx-ctFG9KeItcRm5aCQ");
            UserInfo info = await api.UserInfo();
            Console.WriteLine(info.Username);

            var email = new Mandrill.Models.EmailMessage();

            var correos = new List<EmailAddress>();
            correos.Add(new EmailAddress(para, nombrePara));

            email.To = correos;

            email.Subject = String.Format("Confirmación de registro a {0}", nombreFranquicia);

            email.FromEmail = from;
            email.FromName = nombreFranquicia;


            email.TrackOpens = true;
            email.Html =
                $"Hola {nombrePara}, url: {"http://localhost:49608/Usuario/ConfirmacionCorreo?confirmKey=" + confirmKey} Adicionalmente, esta es tu password para cambiar la contraseña: { password }";

            await api.SendMessage(new SendMessageRequest(email));
        }
Esempio n. 2
0
        public async Task<ActionResult> MailTest()
        {
            var mandrill = new Mandrill.MandrillApi(this.mandrillApiKey);
            var email = new EmailMessage
            {
                FromEmail = this.emailSendingAddress,
                To = new List<EmailAddress> { new EmailAddress(this.errorEmailRecipient) },
                Subject = "VCard import finished",
                Text = "sdfsdf",
            };

            await mandrill.SendMessage(new SendMessageRequest(email));

            return new HttpStatusCodeResult(200);
        }
Esempio n. 3
0
 internal static EmailMessage AddAttachments(EmailMessage message, string[] attachments)
 {
     if (attachments != null)
     {
         var emailAttachments = new List<EmailAttachment>();
         foreach (string file in attachments)
         {
             if (!String.IsNullOrWhiteSpace(file))
             {
                 if (File.Exists(file))
                 {
                     var content = File.ReadAllBytes(file);
                     emailAttachments.Add(new EmailAttachment() { Content = Convert.ToBase64String(content), Name = Path.GetFileName(file) });
                 }
             }
         }
     }
     return message;
 }
 public SendMessageTemplateRequest(EmailMessage message, string templateName, IEnumerable<TemplateContent> templateContents)
 {
   Message = message;
   TemplateName = templateName;
   TemplateContents = templateContents;
 }
 public SendMessageRequest(EmailMessage message)
 {
   Message = message;
 }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="message">The other information on the message to send - same as /messages/send, but without the html content.</param>
 /// <param name="templateName">The immutable name or slug of a template that exists in the user's account. For backwards-compatibility, the template name may also be used but the immutable slug is preferred.</param>
 public SendMessageTemplateRequest(EmailMessage message, string templateName)
 {
   Message = message;
   TemplateName = templateName;
   TemplateContents = new TemplateContent[] {};
 }
Esempio n. 7
0
        public async Task<ActionResult> MailWebhook()
        {
            // Initialize a mandrill client for sending emails
            var mandrill = new Mandrill.MandrillApi(this.mandrillApiKey);
            string sender = null;

            try
            {
                // Get the JSON payload
                string validJson = HttpContext.Request.Form["mandrill_events"].Replace("mandrill_events=", string.Empty);

                if (string.IsNullOrWhiteSpace(validJson))
                {
                    return new HttpStatusCodeResult(400);
                }

                var webhookEvents = JsonConvert.DeserializeObject<List<WebHookEvent>>(validJson);
                if (webhookEvents == null)
                {
                    return new HttpStatusCodeResult(400);
                }

                var results = new List<string>();

                foreach (var webhookEvent in webhookEvents)
                {
                    sender = webhookEvent.Msg.FromEmail;
                    var attachments = webhookEvent.Msg.Attachments;

                    // Verify the security by checking authorized senders
                    if (webhookEvent.Msg.Spf.Result != "pass" && webhookEvent.Msg.Dkim.Valid != true)
                    {
                        throw new Exception("Sender not authorized: SPF / DKIM Check failed.");
                    }

                    // Create an instance of the CRM service that acts in the name of the sender of the email
                    using (var service = new CrmVcardUpdateService(sender))
                    {
                        // Loop through the attachments
                        foreach (var attachment in attachments)
                        {
                            // Get the VCards
                            var filename = this.DecodeBase64Names(attachment.Key);

                            if ((attachment.Value.Type != "text/vcard" && attachment.Value.Type != "text/x-vcard") || !filename.EndsWith(".vcf"))
                            {
                                results.Add(string.Format("{0}: not imported (mime-type: {1})", filename, attachment.Value.Type));
                                continue;
                            }

                            var bytes = attachment.Value.Base64 ? Convert.FromBase64String(attachment.Value.Content) : Encoding.UTF8.GetBytes(attachment.Value.Content);
                            var memoryStream = new MemoryStream(bytes);
                            var vcardReader = new vCardStandardReader();
                            using (var streamreader = new StreamReader(memoryStream))
                            {
                                var vcard = vcardReader.Read(streamreader);

                                // Import the VCards into the CRM
                                var result = service.UpdateContactWithVcard(vcard, filename);
                                results.Add(result);
                            }
                        }
                    }
                }

                // Sends a mail with the results
                var email = new EmailMessage
                {
                    FromEmail = this.emailSendingAddress,
                    To = new List<EmailAddress> { new EmailAddress(sender ?? this.errorEmailRecipient) },
                    Subject = "VCard import finished",
                    Text = "Results:\t\n\t\n" + string.Join("\t\n", results),
                };

                await mandrill.SendMessage(new SendMessageRequest(email));

                return this.View((object)validJson);
            }
            catch (Exception ex)
            {
                // Send a mail with the error
                var email = new EmailMessage
                                {
                                    FromEmail = this.emailSendingAddress,
                                    To = new List<EmailAddress> { new EmailAddress(sender ?? this.errorEmailRecipient) },
                                    Subject = "Error in VCard Import",
                                    Text = JsonConvert.SerializeObject(ex, Formatting.Indented)
                                };

                mandrill.SendMessage(new SendMessageRequest(email));

                throw;
            }
        }