2017-10-27 20 views
0

私はお問い合わせフォームを持っており、お客様のメールアドレスに「Dear John Doe」という顧客名を渡します。名前を表示するにはどうしたらいいですか? asp mvcでメールに顧客名を追加するには

は、私は、@ Model.Nameを呼び出ししようとしたビューにモデルクラスと呼ばれ、電子メールは、コードの代わりに、値を拾っ

マイビュー

@model MyProject.Models.ContactModel; 
<!DOCTYPE html> 
<html> 
<head> 
    <title>Thank You</title> 
</head> 
<body> 
      <h1>Confirmation</h1> 
      <p> 
       Dear @Model.Name, <br /><br /> 
       Thank you for contacting us. This is system generated response 
      </p> 
</body> 
</html> 

コントローラ

[HttpPost] 
public async Task<ActionResult> Index(ContactModel model) 
{ 
    if (ModelState.IsValid) 
    { 

     MailMessage CustomerMsg = new MailMessage(); 
     CustomerMsg.IsBodyHtml = true; 
     CustomerMsg.From = new MailAddress("example.com [email protected]"); 
     CustomerMsg.To.Add(model.EmailContact); 
     CustomerMsg.Subject = "Thank you for your submission"; 
     CustomerMsg.Body = string.Empty; 
     using (StreamReader reader = new StreamReader(Server.MapPath("~/Views/Contact/EmailTemplate.cshtml"))) 
     { 
      CustomerMsg.Body = reader.ReadToEnd(); 
     } 

     using (var smtp = new SmtpClient()) 
     { 
      var credential = new NetworkCredential 
      { 
       UserName = "", 
       Password = "" 
      }; 

      smtp.Credentials = credential; 
      smtp.Host = "mail.example.com"; 
      smtp.Port = 587; 
      smtp.EnableSsl = false; 
      try 
      { 
       await smtp.SendMailAsync(message); 
       await smtp.SendMailAsync(CustomerMsg); 
      } 
      catch (Exception e) 
      { 
       return RedirectToAction("Error", "Home"); 
      } 
      return RedirectToAction("Sent", "Home"); 
     } 
    } 
    return View(model); 

モデル

public class ContactModel 
{ 
    public string error { get; set; } 
    [Required(ErrorMessage = " Name field required")] 
    public string Name { get; set; } 
    [Required(ErrorMessage = " Email field required")] 
    [EmailAddress(ErrorMessage = " Valid email required")] 
    public string EmailContact { get; set; } 
    [Required(ErrorMessage = " Feedback required")] 
    public string Message { get; set; } 
} 
+0

働いていた、それを

を得ました。ファイルから読み込んで魔法のようにHTMLを作成することはできません。 – mason

答えて

0

ビューに表示される「モデル」が表示されません。ビューコードの上部にモデルを追加するだけで簡単ですか? @model Namespace.Models.ContactModelあなたの渡し方がすべて名前の場合は、モデル@model Stringに "String"を使用し、次に@Model@Model.Nameの代わりに使用することもできます。

@model Namespace.Models.ContactModel 
<!DOCTYPE html> 
<html> 
<head> 
    <title>Thank You</title> 
</head> 
<body> 
      <h1>Confirmation</h1> 
      <p> 
       Dear @Model.Name, <br /><br /> 
       Thank you for contacting us. This is system generated response 
      </p> 
</body> 
</html> 
+0

はい私はそれを持っています、電子メールが何らかの理由ですべてのコードを読み取ることができませんでした – theone

+1

あなたは彼が電子メールの本文をどのようにしているかを見ましたか?ディスクからcshtmlを読み込むだけです。それはうまくいかないでしょう。 – mason

0

私は私が私の見解で、{name}を入れて、私のコントローラにこのコードを追加し、それはあなたが実際にCSHTMLに対してカミソリエンジンを実行する必要が完全に

    CustomerMsg.Body = string.Empty; 
      using (StreamReader reader = new StreamReader(Server.MapPath("~/Templates/Email.html"))) 
      { 
       CustomerMsg.Body = reader.ReadToEnd(); 
      } 


      CustomerMsg.Body = CustomerMsg.Body.Replace("{name}", model.Name.ToUpper()); 
関連する問題