مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

saeedkabiri

عضویت از 1396/02/09

مشکل در نمایش ایمیل دریافتی که حاوی کد های html هست

  • چهارشنبه 13 تیر 1397
  • 00:35
تشکر میکنم

سلام میخوام بعد از ثبت تماس با ما ، ایمیلی به کاربر ثبت کننده بفرستم که این ایمیل از تمپلت استفاده میکنه 

با استفاده از آموزش 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);

      }

    }

اینم از نتیجه ی کار:

پاسخ های این پرسش

تعداد پاسخ ها : 3 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • چهارشنبه 13 تیر 1397
  • 07:52

کد زیر رو از حالت کامنت در بیارید

//mail.IsBodyHtml = true;

کاربر سایت

AmirGhasemi

عضویت از 1392/02/25

  • چهارشنبه 13 تیر 1397
  • 14:34

اولا اینکه IsBodyHtml  را true   کن

در ثانی استایل را هم باید بصورت Inline  بنویسی

کاربر سایت

saeedkabiri

عضویت از 1396/02/09

  • چهارشنبه 13 تیر 1397
  • 19:51

بابت پاسخگویی به تاپیک متشکرم

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)