Carrotware.CMS.UI.Components.ContactInfo.SendMail C# (CSharp) Метод

SendMail() публичный Метод

public SendMail ( Carrotware.CMS.Core.PostComment pc, ContentPage page ) : void
pc Carrotware.CMS.Core.PostComment
page Carrotware.CMS.Core.ContentPage
Результат void
        public void SendMail(PostComment pc, ContentPage page)
        {
            HttpRequest request = HttpContext.Current.Request;

            if (this.Settings.NotifyEditors || !String.IsNullOrEmpty(this.Settings.DirectEmailKeyName)) {
                List<string> emails = new List<string>();

                if (this.Settings.NotifyEditors && page != null) {
                    emails.Add(page.CreateUser.Email);

                    if (page.EditUser.UserId != page.CreateUser.UserId) {
                        emails.Add(page.EditUser.Email);
                    }

                    if (page.CreditUserId.HasValue) {
                        emails.Add(page.CreditUser.Email);
                    }
                }

                if (!String.IsNullOrEmpty(this.Settings.DirectEmailKeyName)) {
                    emails.Add(ConfigurationManager.AppSettings[this.Settings.DirectEmailKeyName].ToString());
                }

                string strHTTPHost = String.Empty;
                try { strHTTPHost = request.ServerVariables["HTTP_HOST"].ToString().Trim(); } catch { strHTTPHost = String.Empty; }

                string hostName = strHTTPHost.ToLowerInvariant();

                string strHTTPPrefix = "http://";
                try {
                    strHTTPPrefix = request.ServerVariables["SERVER_PORT_SECURE"] == "1" ? "https://" : "http://";
                } catch { strHTTPPrefix = "http://"; }

                strHTTPHost = String.Format("{0}{1}", strHTTPPrefix, strHTTPHost).ToLowerInvariant();

                string mailSubject = String.Format("Comment Form From {0}", hostName);

                string sBody = "Name:   " + pc.CommenterName
                    + "\r\nEmail:   " + pc.CommenterEmail
                    + "\r\nURL:   " + pc.CommenterURL
                    + "\r\n-----------------"
                    + "\r\nComment:\r\n" + HttpUtility.HtmlEncode(pc.PostCommentText)
                    + "\r\n=================\r\n"
                    + "\r\nIP:   " + pc.CommenterIP
                    + "\r\nSite URL:   " + String.Format("{0}{1}", strHTTPHost, page.FileName)
                    + "\r\nSite Time:   " + SiteData.CurrentSite.Now.ToString()
                    + "\r\nUTC Time:   " + DateTime.UtcNow.ToString();

                string sEmail = String.Join(";", emails);

                EmailHelper.SendMail(null, sEmail, mailSubject, sBody, false);
            }
        }

Usage Example

		public PartialViewResult Contact(ContactInfo model) {
			model.ReconstructSettings();
			this.ViewData[ContactInfo.Key] = model;
			model.IsSaved = false;

			LoadPage(model.Settings.Uri);

			var settings = model.Settings;

			if (settings.UseValidateHuman) {
				bool IsValidated = model.ValidateHuman.ValidateValue(model.ValidationValue);
				if (!IsValidated) {
					ModelState.AddModelError("ValidationValue", model.ValidateHuman.AltValidationFailText);
					model.ValidationValue = String.Empty;
				}
			}

			//TODO: log the comment and B64 encode some of the settings (TBD)
			if (ModelState.IsValid) {
				string sIP = Request.ServerVariables["REMOTE_ADDR"].ToString();

				PostComment pc = new PostComment();
				pc.ContentCommentID = Guid.NewGuid();
				pc.Root_ContentID = _page.ThePage.Root_ContentID;
				pc.CreateDate = SiteData.CurrentSite.Now;
				pc.IsApproved = false;
				pc.IsSpam = false;
				pc.CommenterIP = sIP;
				pc.CommenterName = Server.HtmlEncode(model.CommenterName);
				pc.CommenterEmail = Server.HtmlEncode(model.CommenterEmail ?? String.Empty);
				pc.PostCommentText = Server.HtmlEncode(model.PostCommentText); //.Replace("<", "&lt;").Replace(">", "&gt;");
				pc.CommenterURL = Server.HtmlEncode(model.CommenterURL ?? String.Empty);

				pc.Save();

				model.IsSaved = true;

				model.CommenterName = String.Empty;
				model.CommenterEmail = String.Empty;
				model.PostCommentText = String.Empty;
				model.CommenterURL = String.Empty;
				model.ValidationValue = String.Empty;

				this.ViewData[ContactInfo.Key] = model;
				model.SendMail(pc, _page.ThePage);

				ModelState.Clear();
			}

			return PartialView(settings.PostPartialName);
		}