سلام میخوام بعد از ثبت تماس با ما ، ایمیلی به کاربر ثبت کننده بفرستم که این ایمیل از تمپلت استفاده میکنه
با استفاده از آموزش 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 بنویسی
بابت پاسخگویی به تاپیک متشکرم
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)