Ejemplo n.º 1
0
    // Use this for initialization
    void Start()
    {
        string mailJsonString = readTextFile ("Assets/Scripts/mail.json");

        Debug.Log (mailJsonString);

        var mailJson = JSON.Parse(mailJsonString);
        mailList = new List<MailObject>();
        for (int i = 0; i<10; i++) {
            MailObject mail = new MailObject();
            mail.email = mailJson[i]["email"];
            mail.subject = mailJson[i]["subject"];
            mail.company = mailJson[i]["company"];
            mail.date = mailJson[i]["date"];
            mail.name = mailJson[i]["name"]["first"] + " " + mailJson[i]["name"]["last"];
            Debug.Log(mail.email);
            mailList.Add(mail);
        }
        //Free up the memory
        mailJsonString = null;
        mailJson = null;

        string todoJsonString = readTextFile ("Assets/Scripts/todo.json");
        var todoJson = JSON.Parse (todoJsonString);
        List<TodoObject> todoList = new List<TodoObject> ();
        for (int i = 0; i<10; i++) {
            TodoObject todo = new TodoObject();
            todo.date = todoJson[i]["date"];
            todo.task = todoJson[i]["task"];
            todo.done = bool.Parse(todoJson[i]["status"]);
            Debug.Log(todo.done);
            todoList.Add(todo);
        }
    }
Ejemplo n.º 2
0
        public async Task SendEmailAsync(MailMessage msg)
        {
            try
            {
                _httpClient.DefaultRequestHeaders.Add("api-key", _configProvider.ApiKey);
                _httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                var mailObject = new MailObject
                {
                    Sender = new MailTarget {
                    },
                    To     = new[] { new MailTarget {
                                         Name = msg.To, Email = msg.EmailAddress
                                     } },
                    Subject     = msg.Subject,
                    HtmlContent = msg.Body
                };
                var mailObjectString = JsonConvert.SerializeObject(mailObject);
                await _httpClient.PostAsync("smtp/email", new StringContent(mailObjectString, Encoding.UTF8, "application/json"));
            }
            catch (Exception ex)
            {
                // Log using default logging provider
                throw;
            }
        }
Ejemplo n.º 3
0
        public virtual async Task <int> SendEmailAsync(MailObject message, EmailAddress from = null, EmailAddress replyTo = null)
        {
            if (!Engine.Settings.Mail.SendGridKey.IsSet())
            {
                throw new System.Exception("SendGrid is not setup. Create a free account and set up an API key to send emails.");
            }

            SendGridClient client = GetMailClient();

            if (from == null)
            {
                from = GetSiteFromEmail();
            }

            var html = await _renderer.Render(message.Template, message);

            var msg = MailHelper.CreateSingleEmail(from, message.To, message.Subject, message.ToString(), html);

            msg.ReplyTo = replyTo;
            var response = await client.SendEmailAsync(msg);

            var body = await response.DeserializeResponseBodyAsync(response.Body);

            if (response.StatusCode == HttpStatusCode.Accepted || response.StatusCode == HttpStatusCode.OK)
            {
                return(1);
            }

            throw new System.Exception("The email could not be sent, check your SendGrid settings.");
        }
Ejemplo n.º 4
0
        public virtual async Task <int> NotifyRoleAsync(MailObject message, string roleName, EmailAddress from = null, EmailAddress replyTo = null)
        {
            var users = await UserManager.GetUsersInRoleAsync(roleName);

            int sent = 0;

            foreach (var user in users)
            {
                var messageToSend = message;
                messageToSend.To = new EmailAddress(user.Email);
                sent            += await SendEmailAsync(messageToSend, from, replyTo);
            }
            return(sent);
        }
Ejemplo n.º 5
0
        public Boolean SendMail(MailObject data)
        {
            ThreadStart threadStart = delegate() { SendMailF(data); };
            Thread      thread      = new Thread(threadStart);

            thread.Start();
            if (this.itOk)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Ejemplo n.º 6
0
        public MailObject WriteNotificationToMailObject(MailObject message)
        {
            var contactSettings = Engine.Settings.Contact;

            message.PreHeader = AdminNotificationTitle.IsSet() ? AdminNotificationTitle.ReplaceSiteVariables() : contactSettings.AdminNoficationTitle.ReplaceSiteVariables();
            message.Subject   = AdminNotificationSubject.IsSet() ? AdminNotificationSubject.ReplaceSiteVariables() : contactSettings.AdminNoficationSubject.ReplaceSiteVariables();
            message.AddParagraph(AdminNotificationMessage.IsSet() ? AdminNotificationMessage.ReplaceSiteVariables() : contactSettings.AdminNoficationMessage.ReplaceSiteVariables());
            message.AddParagraph("Name: <strong>" + Name + "</strong>");
            message.AddParagraph("Email: <strong>" + Email + "</strong>");
            message.AddParagraph("Phone: <strong>" + PhoneNumber + "</strong>");
            message.AddParagraph("Subject: <strong>" + Subject + "</strong>");
            message.AddParagraph("Enquiry:");
            message.AddParagraph("<strong>" + Enquiry + "</strong>");
            return(message);
        }
Ejemplo n.º 7
0
        public virtual async Task SendPasswordResetToken(ApplicationUser user)
        {
            string code = await UserManager.GeneratePasswordResetTokenAsync(user);

            string callbackUrl = _linkGenerator.GetUriByAction(_contextAccessor.HttpContext, "ResetPassword", "Account", new { userId = user.Id, code });

            MailObject message = new MailObject()
            {
                To        = new SendGrid.Helpers.Mail.EmailAddress(user.Email),
                PreHeader = "Reset your password.",
                Subject   = "Reset your password."
            };

            message.AddParagraph($"Please reset your password by clicking here:");
            message.AddCallToAction("Reset your password", callbackUrl);
            message.Template = MailSettings.WarningTemplate;
            await _emailSender.SendEmailAsync(message);
        }
Ejemplo n.º 8
0
        internal static async Task <string> Send(string apiKey, MailObject mailObject)
        {
            using (var client = new HttpClient())
            {
                var jsonMail = JsonConvert.SerializeObject(mailObject, Formatting.Indented, new JsonSerializerSettings
                {
                    NullValueHandling = NullValueHandling.Ignore,
                    ContractResolver  = new LowercaseContractResolver()
                });

                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);

                var response = await client.PostAsync("https://api.sendgrid.com/v3/mail/send", new StringContent(jsonMail, Encoding.UTF8, "application/json"));

                return(response.IsSuccessStatusCode ? "success" : await response.Content.ReadAsStringAsync());
            }
        }
Ejemplo n.º 9
0
        protected virtual MailObject GetDemoMail()
        {
            MailObject mail = new MailObject()
            {
                Subject   = "Plain old email",
                PreHeader = "Some preheader text..."
            };

            mail.AddH1("Cras ac consectetur orci, eu.", align: "left");
            mail.AddH2("Aliquam tempor congue dui, quis.", align: "left");
            mail.AddH3("Nulla ac est blandit, pretium augue a, porta dui. ", align: "left");
            mail.AddH4("Nunc at pellentesque ligula, vel ullamcorper ipsum. Aenean lorem.", align: "left");
            mail.AddParagraph("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum at semper lorem, id varius leo. Vivamus tristique ac ante eu bibendum. Praesent quis dolor justo. Nullam interdum vestibulum tortor, vitae aliquet mauris faucibus id. Aenean sed massa quis dolor tempor mollis vitae sit amet erat. Donec eleifend, nisi consectetur gravida egestas, leo erat viverra mauris, a dapibus ligula nisi ut erat. Nulla laoreet scelerisque vulputate. Duis laoreet ex quis tellus elementum efficitur. Proin ut lorem a lorem blandit pulvinar vel a tellus. Cras in dolor bibendum, maximus eros eget, tristique erat. Aliquam commodo quis lacus quis volutpat. Suspendisse ut auctor mauris, eget venenatis sem. Suspendisse et leo vitae risus auctor malesuada et id lacus. Vestibulum a libero quis sapien varius pharetra lacinia elementum nulla. Nam tempus, turpis id faucibus congue, magna lorem aliquam orci, quis suscipit metus elit bibendum justo. Quisque sagittis consequat tellus, eget imperdiet risus congue non.", align: "left");
            mail.AddParagraph("Vivamus vehicula auctor maximus. Praesent purus dui, venenatis eu lectus et, convallis aliquam urna. Vestibulum pharetra imperdiet dolor, ac convallis risus sagittis eget. Sed nulla erat, tristique et erat id, viverra viverra nisi. Morbi ex libero, eleifend eget orci blandit, vestibulum bibendum nisl. In dapibus faucibus eros, sit amet iaculis turpis dignissim lacinia. Phasellus pretium odio vitae sem porttitor molestie. Morbi luctus est posuere lectus ullamcorper viverra. In sed facilisis purus.", align: "left");
            mail.AddParagraph("Sed semper lectus quis fermentum tincidunt. Maecenas nisi nisl, scelerisque non mi non, pharetra dapibus nibh. Sed ante orci, pretium eu ullamcorper a, laoreet at massa. Nam at arcu dui. Integer sollicitudin urna eget rutrum auctor. Nulla nec metus vel elit fermentum tincidunt. Donec placerat venenatis quam, at sodales mi cursus et. Etiam scelerisque, augue ac ullamcorper dictum, ex purus vestibulum quam, sit amet rutrum tortor arcu sed turpis. Curabitur ut turpis bibendum, semper neque non, maximus mi.", align: "left");
            mail.AddCallToAction("Ut non imperdiet", HttpContext.GetSiteUrl(), align: "left");
            mail.AddParagraph("And that's about it!", align: "left");
            return(mail);
        }
Ejemplo n.º 10
0
        protected override void Execute(CodeActivityContext context)
        {
            string filePath = FilePath.Get(context);

            MsgReader.Mime.Message mailObject = null;
            string message = null;

            try
            {
                if (File.Exists(filePath))
                {
                    if (Path.GetExtension(filePath).ToLower() == ".eml")
                    {
                        Stream stream = File.Open(filePath, FileMode.Open, FileAccess.Read);
                        mailObject = MsgReader.Mime.Message.Load(stream);

                        MailObject.Set(context, mailObject);
                        stream.Dispose();

                        if (MailObject != null)
                        {
                            message = "Success";
                        }
                    }
                }
                else
                {
                    message = "File doesnot exist";
                }
            }
            catch (Exception ex)
            {
                message = ex.Message;
            }
            finally
            {
                Message.Set(context, message);
                mailObject = null;
            }
        }
Ejemplo n.º 11
0
        public async Task <Response> ProcessAndSend(IEmailSendable model)
        {
            try
            {
                MailObject message = new MailObject();
                message = model.WriteToMailObject(message);

                if (model.SendToRecipient)
                {
                    message.To = model.To;
                    await _email.SendEmailAsync(message, model.From, model.ReplyTo);
                }

                message = new MailObject();
                message = model.WriteNotificationToMailObject(message);

                if (model.NotifyEmails != null)
                {
                    foreach (var recipient in model.NotifyEmails)
                    {
                        message.To = recipient;
                        await _email.SendEmailAsync(message, model.From, model.ReplyTo);
                    }
                }

                if (model.NotifyRole.IsSet())
                {
                    await _email.NotifyRoleAsync(message, model.NotifyRole, model.From, model.ReplyTo);
                }

                return(new Response(true, $"The message has been sent."));
            }
            catch (Exception sendEx)
            {
                await _logService.AddExceptionAsync <MailService>("There was a problem sending the message: " + sendEx.Message, sendEx);

                throw new Exception("There was a problem sending the message.", sendEx);
            }
        }
Ejemplo n.º 12
0
    // Use this for initialization
    void Start()
    {
        string mailJsonString = readTextFile("Assets/Scripts/mail.json");

        Debug.Log(mailJsonString);

        var mailJson = JSON.Parse(mailJsonString);

        mailList = new List <MailObject>();
        for (int i = 0; i < 10; i++)
        {
            MailObject mail = new MailObject();
            mail.email   = mailJson[i]["email"];
            mail.subject = mailJson[i]["subject"];
            mail.company = mailJson[i]["company"];
            mail.date    = mailJson[i]["date"];
            mail.name    = mailJson[i]["name"]["first"] + " " + mailJson[i]["name"]["last"];
            Debug.Log(mail.email);
            mailList.Add(mail);
        }
        //Free up the memory
        mailJsonString = null;
        mailJson       = null;


        string            todoJsonString = readTextFile("Assets/Scripts/todo.json");
        var               todoJson       = JSON.Parse(todoJsonString);
        List <TodoObject> todoList       = new List <TodoObject> ();

        for (int i = 0; i < 10; i++)
        {
            TodoObject todo = new TodoObject();
            todo.date = todoJson[i]["date"];
            todo.task = todoJson[i]["task"];
            todo.done = bool.Parse(todoJson[i]["status"]);
            Debug.Log(todo.done);
            todoList.Add(todo);
        }
    }
Ejemplo n.º 13
0
        public virtual async Task <IActionResult> Test(string email = "*****@*****.**", string template = Models.MailSettings.PlainTemplate)
        {
            try
            {
                MailObject mail = GetDemoMail();
                mail.To        = new SendGrid.Helpers.Mail.EmailAddress(email);
                mail.Subject   = "Test email from HoodCMS";
                mail.PreHeader = "This is a test email from HoodCMS.";
                mail.Template  = template;
                await _emailSender.SendEmailAsync(mail);

                SaveMessage = $"Test message sent to {email}.";
                MessageType = AlertType.Success;
            }
            catch (Exception ex)
            {
                SaveMessage = $"Error sending test email to {email}.";
                MessageType = AlertType.Danger;
                await _logService.AddExceptionAsync <BaseMailController>(SaveMessage, ex);
            }
            return(RedirectToAction("Mail", "Settings"));
        }
Ejemplo n.º 14
0
        public Boolean SendMailF(MailObject data)
        {
            string myMail      = "[email protected]‏";
            string myPassoword = "wedding012";

            try
            {
                SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
                client.EnableSsl             = true;
                client.DeliveryMethod        = SmtpDeliveryMethod.Network;
                client.UseDefaultCredentials = false;
                client.Credentials           = new NetworkCredential(myMail, myPassoword);
                MailMessage mm = new MailMessage(myMail, data.toMail, data.subject, data.message);
                client.Send(mm);
                this.itOk = true;
                return(true);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception caught in CreateTestMessage2(): {0}",
                                  ex.ToString());
                return(false);
            }
        }
Ejemplo n.º 15
0
        public virtual async Task <Response> Create(AdminCreateUserViewModel model)
        {
            try
            {
                ApplicationUser user = new ApplicationUser
                {
                    UserName          = model.Username,
                    Email             = model.Email,
                    FirstName         = model.FirstName,
                    LastName          = model.LastName,
                    DisplayName       = model.DisplayName,
                    PhoneNumber       = model.Phone,
                    JobTitle          = model.JobTitle,
                    Anonymous         = model.Anonymous,
                    CreatedOn         = DateTime.UtcNow,
                    LastLogOn         = DateTime.UtcNow,
                    LastLoginLocation = HttpContext.Connection.RemoteIpAddress.ToString(),
                    LastLoginIP       = HttpContext.Connection.RemoteIpAddress.ToString()
                };
                user.AddUserNote(new UserNote()
                {
                    CreatedBy = User.GetLocalUserId(),
                    CreatedOn = DateTime.UtcNow,
                    Note      = $"User created via admin panel by {User.Identity.Name}."
                });
                IdentityResult result = await _account.CreateAsync(user, model.Password);

                if (!result.Succeeded)
                {
                    return(new Response(result.Errors));
                }

                if (model.CreateValidated)
                {
                    user.EmailConfirmed = true;
                    user.Active         = true;
                    await _account.UpdateUserAsync(user);
                }
                else
                {
                    if (!Engine.Settings.Account.RequireEmailConfirmation)
                    {
                        user.EmailConfirmed = true;
                    }
                }

                if (model.NotifyUser)
                {
                    // Send the email to the user, letting em know n' shit.
                    // Create the email content
                    try
                    {
                        MailObject message = new MailObject()
                        {
                            To        = new SendGrid.Helpers.Mail.EmailAddress(user.Email),
                            PreHeader = "You access information for " + Engine.Settings.Basic.FullTitle,
                            Subject   = "You account has been created."
                        };
                        message.AddH1("Account Created!");
                        message.AddParagraph("Your new account has been set up on the " + Engine.Settings.Basic.FullTitle + " website.");
                        message.AddParagraph("Name: <strong>" + user.ToInternalName() + "</strong>");
                        message.AddParagraph("Username: <strong>" + model.Username + "</strong>");
                        message.AddParagraph("Password: <strong>" + model.Password + "</strong>");
                        message.AddCallToAction("Log in here", ControllerContext.HttpContext.GetSiteUrl() + "/account/login", "#32bc4e", "center");
                        await _emailSender.SendEmailAsync(message);
                    }
                    catch (Exception)
                    {
                        // roll back!
                        ApplicationUser deleteUser = await _account.GetUserByEmailAsync(model.Email);

                        await _account.DeleteUserAsync(deleteUser.Id, User);

                        throw new Exception("There was a problem sending the email, ensure the site's email address and SendGrid settings are set up correctly before sending.");
                    }
                }
                await _logService.AddLogAsync <BaseUsersController>($"A new user account has been created in the admin area for {user.Email}", type : LogType.Success);

                return(new Response(true, "Successfully created."));
            }
            catch (Exception ex)
            {
                return(await ErrorResponseAsync <BaseUsersController>($"Error creating a user via the admin panel.", ex));
            }
        }
Ejemplo n.º 16
0
        /// <summary>
        /// This is the main thread, controls the whole update process.
        /// All other functions are fired of from here and once complete, the update is complete.
        /// </summary>
        private async void RefreshAllMedia()
        {
            try
            {
                // Start by cleaning the temp folder.
                CleanTempFolder();

                var all = Database.Media;

                Lock.AcquireWriterLock(Timeout.Infinite);
                Total = all.Count();
                Lock.ReleaseWriterLock();

                foreach (var media in all)
                {
                    CheckForCancel();
                    try
                    {
                        await _media.RefreshMedia(media, TempFolder);
                    }
                    catch (WebException ex)
                    {
                        StatusMessage = string.Format("Downloading file failed: {0} - {1}", media.Filename, ex.Message);
                    }
                    catch (Exception ex)
                    {
                        StatusMessage = string.Format("Error updating media: {0} -  {1}", media.Filename, ex.Message);
                    }

                    Lock.AcquireWriterLock(Timeout.Infinite);
                    Processed++;
                    PercentComplete = (Processed / Total) * 60;
                    StatusMessage   = string.Format("Processed file: {0}", media.Filename);
                    Lock.ReleaseWriterLock();
                }
                Lock.AcquireWriterLock(Timeout.Infinite);
                PercentComplete = 60;
                StatusMessage   = string.Format("Processed all files, commencing Content updates...");
                Lock.ReleaseWriterLock();

                await Database.SaveChangesAsync();

                // now we need to iterate through any items that may have media attached, and re-attach.
                // content
                // properties
                // app users

                foreach (var content in Database.Content)
                {
                    if (content.FeaturedImage != null)
                    {
                        var media = Database.Media.Find(content.FeaturedImage.Id);
                        content.FeaturedImage = new ContentMedia(media);
                        StatusMessage         = string.Format("Refreshing content featured image: {0} {1}", content.Id, content.Title);
                    }
                }
                await Database.SaveChangesAsync();

                Lock.AcquireWriterLock(Timeout.Infinite);
                PercentComplete = 70;
                StatusMessage   = string.Format("Content updated, commencing Properties updates...");
                Lock.ReleaseWriterLock();

                foreach (var property in Database.Properties)
                {
                    if (property.FeaturedImage != null)
                    {
                        property.FeaturedImage = Database.Media.Find(property.FeaturedImage.Id);
                        StatusMessage          = string.Format("Refreshing property featured image: {0} {1}", property.Id, property.Title);
                    }
                    if (property.InfoDownload != null)
                    {
                        property.FeaturedImage = Database.Media.Find(property.FeaturedImage.Id);
                        StatusMessage          = string.Format("Refreshing property info download: {0} {1}", property.Id, property.Title);
                    }
                }
                await Database.SaveChangesAsync();

                Lock.AcquireWriterLock(Timeout.Infinite);
                PercentComplete = 80;
                StatusMessage   = string.Format("Properties updated, commencing Users updates...");
                Lock.ReleaseWriterLock();

                foreach (var user in Database.Users)
                {
                    if (user.Avatar != null)
                    {
                        user.Avatar   = Database.Media.Find(user.Avatar.Id);
                        StatusMessage = string.Format("Refreshing user avatar: {0} {1}", user.Id, user.ToInternalName());
                    }
                }
                await Database.SaveChangesAsync();

                Lock.AcquireWriterLock(Timeout.Infinite);
                PercentComplete = 90;
                StatusMessage   = string.Format("All done, emailing results...");
                Lock.ReleaseWriterLock();

                MailObject message = new MailObject()
                {
                    PreHeader = "All media files have been refreshed.",
                    Subject   = "All media files have been refreshed."
                };
                message.AddH1("Complete!");
                message.AddParagraph("All media files have been successfully refreshed on " + _context.GetSiteUrl());

                IEmailSender emailSender = Engine.Services.Resolve <IEmailSender>();
                await emailSender.NotifyRoleAsync(message, "SuperUser");

                // Clean the temp directory...
                CleanTempFolder();

                Lock.AcquireWriterLock(Timeout.Infinite);
                PercentComplete = 100;
                Succeeded       = true;
                Running         = false;
                StatusMessage   = "Update completed at " + DateTime.UtcNow.ToShortTimeString() + " on " + DateTime.UtcNow.ToLongDateString() + ".";
                Lock.ReleaseWriterLock();

                return;
            }
            catch (Exception ex)
            {
                Lock.AcquireWriterLock(Timeout.Infinite);
                Running       = false;
                StatusMessage = ex.Message;
                Lock.ReleaseWriterLock();
                return;
            }
        }