سلام میخوام بعد از ثبت تماس با ما ، ایمیلی به کاربر ثبت کننده بفرستم که این ایمیل از تمپلت استفاده میکنه
با استفاده از آموزش https://barnamenevisan.org/Articles/Article3837.html کد هاش نوشتم اما وقتی ایمیل باز می کنم فایل های html خام دیده میشن ، چطور می تونم مشکل بر طرف کنم؟
[HttpPost] [ValidateAntiForgeryToken] public ActionResult ContactMe(FormCollection form, Contact contact) { if (!ResultCaptcha.ResultReCaptcha(form)) { ViewBag.Message = "لطفا هویت خود را تایید کنید"; ViewBag.Color = "danger"; return View(); } if (ModelState.IsValid) { contact.Contact_DateEnter = DateTime.Now; contact.Contact_IsActive = false; dbContact.Add(contact); dbContact.Save(); ViewBag.Message = contact.Contact_FullName+" " +"پیام شما با موفقیت ارسال شد."; ViewBag.Color = "success"; EmailContact(contact); } return View(); } public void EmailContact(Contact contact) { MailMessage mail = new MailMessage(); SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com"); mail.From = new MailAddress("From@Domain.com"); mail.To.Add(contact.Contact_Email); mail.Subject = "ایمیل ثبت ارسال پیامک"; //mail.Body = "<b>تست ارسال پیام تستی است و حذف گردد.</b>"; mail.Body = CreateEmailBody( contact, "~/HTMLTemaplate.html") ; SendHtmlFormattedEmail("New article published!", mail.Body,contact); //mail.IsBodyHtml = true; //System.Net.Mail.Attachment attachment; // attachment = new System.Net.Mail.Attachment("c:/textfile.txt"); // mail.Attachments.Add(attachment); SmtpServer.Port = 587; SmtpServer.Credentials = new NetworkCredential("***********@gmail.com", "********"); SmtpServer.EnableSsl = true; SmtpServer.Send(mail); } public string CreateEmailBody(Contact contact,string pathFile) { string body = string.Empty; //using streamreader for reading my htmltemplate using (StreamReader reader = new StreamReader(Server.MapPath(pathFile)/*Server.MapPath("~/HtmlTemplate.html")*/)) { body = reader.ReadToEnd(); } body = body.Replace("{UserName}", contact.Contact_FullName); //replacing the required things body = body.Replace("{Title}", contact.Contact_Phone); body = body.Replace("{message}", contact.Contact_Text); return body; } private void SendHtmlFormattedEmail(string subject, string body,Contact contact) { using (MailMessage mailMessage = new MailMessage()) { mailMessage.From = new MailAddress(ConfigurationManager.AppSettings["UserName"]); mailMessage.Subject = subject; mailMessage.Body = body; mailMessage.IsBodyHtml = true; mailMessage.To.Add(new MailAddress(contact.Contact_Email)); SmtpClient smtp = new SmtpClient(); smtp.Host = ConfigurationManager.AppSettings["Host"]; smtp.EnableSsl = Convert.ToBoolean(ConfigurationManager.AppSettings["EnableSsl"]); System.Net.NetworkCredential NetworkCred = new System.Net.NetworkCredential(); NetworkCred.UserName = ConfigurationManager.AppSettings["UserName"]; //reading from web.config NetworkCred.Password = ConfigurationManager.AppSettings["Password"]; //reading from web.config smtp.UseDefaultCredentials = true; smtp.Credentials = NetworkCred; smtp.Port = int.Parse(ConfigurationManager.AppSettings["Port"]); //reading from web.config smtp.Send(mailMessage); } }
اینم از نتیجه ی کار:
کد زیر رو از حالت کامنت در بیارید
//mail.IsBodyHtml = true;
اولا اینکه IsBodyHtml را true کن
در ثانی استایل را هم باید بصورت Inline بنویسی
بابت پاسخگویی به تاپیک متشکرم
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)