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

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

کاربر سایت

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

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

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

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

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