コード例 #1
0
        // POST umbraco/api/umbcontact/post
        public HttpResponseMessage Post([FromBody] UmbContactMail message)
        {
            // Return errors if the model validation fails
            // The model defines validations for empty or invalid email addresses
            // See the UmbContactMail class below
            if (ModelState.IsValid == false)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState.First().Value.Errors.First().ErrorMessage));
            }

            // Create a new Pipeline Contact and store in cookie
            var        contact = PipelineHelper.CreateContact(message.Name, message.Email, message.Telephone, message.Organisation);
            HttpCookie cookie  = new HttpCookie("PipelineContactId");

            cookie.Value   = contact.Id.ToString();
            cookie.Expires = DateTime.MaxValue;
            HttpContext.Current.Response.SetCookie(cookie);

            // Create new opportunity in Pipeline CRM
            var pipeline = PipelineHelper.CreatePipeline(
                "Website query",
                message.Name,
                message.Email,
                message.Telephone,
                message.Organisation,
                message.Message
                );

            return(new HttpResponseMessage(HttpStatusCode.OK));
        }
コード例 #2
0
        // POST umbraco/api/umbcontact/post
        public HttpResponseMessage Post([FromBody] UmbContactMail message)
        {
            // Return errors if the model validation fails
            // The model defines validations for empty or invalid email addresses
            // See the UmbContactMail class below
            if (ModelState.IsValid == false)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState.First().Value.Errors.First().ErrorMessage));
            }

            // In order to allow editors to configure the email address where contact
            // mails will be sent, we require that to be set in a property with the
            // alias umbEmailTo - This property needs to be sent into this API call
            var umbraco = new UmbracoHelper(UmbracoContext);
            var content = umbraco.TypedContent(message.SettingsNodeId);

            if (content == null)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest,
                                                   "Please provide a valid node Id on which the umbEmailTo property is defined."));
            }

            var mailTo = content.GetPropertyValue <string>("Email");

            if (string.IsNullOrWhiteSpace(mailTo))
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest,
                                                   string.Format("The umbEmailTo property on node {0} (Id {1}) does not exists or has not been filled in.",
                                                                 content.Name, content.Id)));
            }

            // If we have a valid email address to send the email to, we can try to
            // send it. If the is an error, it's most likely caused by a wrong SMTP configuration
            return(TrySendMail(message, mailTo)
                ? new HttpResponseMessage(HttpStatusCode.OK)
                : Request.CreateErrorResponse(HttpStatusCode.ServiceUnavailable,
                                              "Could not send email. Make sure the server settings in the mailSettings section of the Web.config file are configured correctly. For a detailed error, check ~/App_Data/Logs/UmbracoTraceLog.txt."));
        }
コード例 #3
0
        private static bool TrySendMail(UmbContactMail message, string mailTo)
        {
            try
            {
                var content = string.Empty;
                content += string.Format("You have a new contact mail from {0}", string.IsNullOrWhiteSpace(message.Name) ? "[no name given]" : message.Name);
                content += "\r\n";
                content += "They said:";
                content += "\r\n";
                content += string.Format("{0}", string.IsNullOrWhiteSpace(message.Message) ? "[no message entered]" : message.Message);

                var mailFrom = new System.Net.Mail.MailAddress(message.Email, message.Name);

                var mailMsg = new System.Net.Mail.MailMessage
                {
                    From       = mailFrom,
                    Subject    = "Contact mail",
                    Body       = content,
                    IsBodyHtml = false
                };

                mailMsg.To.Add(new System.Net.Mail.MailAddress(mailTo));
                mailMsg.ReplyToList.Add(mailFrom);

                var smtpClient = new System.Net.Mail.SmtpClient();
                smtpClient.Send(mailMsg);

                return(true);
            }
            catch (Exception ex)
            {
                LogHelper.Error <UmbContactController>("Error sending contact mail", ex);
            }

            return(false);
        }
コード例 #4
0
        private static bool TrySendMail(UmbContactMail message, string mailTo)
        {
            try
            {
                var content = string.Empty;
                content += string.Format("You have a new contact mail from {0}", string.IsNullOrWhiteSpace(message.Name) ? "[no name given]" : message.Name);
                content += "\r\n";
                content += "They said:";
                content += "\r\n";
                content += string.Format("{0}", string.IsNullOrWhiteSpace(message.Message) ? "[no message entered]" : message.Message);

                var mailFrom = new System.Net.Mail.MailAddress(message.Email, message.Name);

                var mailMsg = new System.Net.Mail.MailMessage
                {
                    From = mailFrom,
                    Subject = "Contact mail",
                    Body = content,
                    IsBodyHtml = false
                };

                mailMsg.To.Add(new System.Net.Mail.MailAddress(mailTo));
                mailMsg.ReplyToList.Add(mailFrom);

                var smtpClient = new System.Net.Mail.SmtpClient();
                smtpClient.Send(mailMsg);

                return true;
            }
            catch (Exception ex)
            {
                LogHelper.Error<UmbContactController>("Error sending contact mail", ex);
            }

            return false;
        }