public SendMail ( Carrotware.CMS.Core.PostComment pc, |
||
pc | Carrotware.CMS.Core.PostComment | |
page | ||
Результат | 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);
}
}
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("<", "<").Replace(">", ">"); 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); }