2011-12-20 16 views
0

これまで、電子メールフォームasp.netでフォームフィールドを送信するためにこれまで何かを使ってきましたが、もっと電子メールをフォーマットしようとしていますが、メッセージにテキストボックスの値を渡す方法を知っている誰かが私を助けることができますか?電子メール本文にフォームテキストを追加する方法

//OLD WAY 
message.Body += "<b>Preferred contact method: </b> " + drp_contact_method.SelectedValue + "<br/>";// 


protected void btnAction_Click(object sender, EventArgs e) 
    { 
     if ((Page.IsValid)) 
     { 
      if (dpAction.SelectedValue.ToString()=="Submit") 
      { 
      // define SMTP client 

      SmtpClient smtp = new SmtpClient("IP HERE"); 
      //smtp.EnableSsl = true; 
      // smtp.UseDefaultCredentials = true; 
      //create the mail message 
      MailMessage message = new MailMessage(); 

      //From address will be given as a MailAddress Object 
      message.From = new MailAddress("[email protected]"); 


      //To address collection of MailAddress 
      message.To.Add("[email protected]"); 
      message.Subject = "Pre-Registration Form"; 


      // Change to false to not include HTML 

      string bodyHTML = string.Empty; 
      string bodyPlain = string.Empty; 
      message.IsBodyHtml = true; 

      bodyHTML = @"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 
'http://www.w3.org/TR/html4/loose.dtd'> 
<html lang='en'> 
<head> 
</head> 
<body> 
<table style='width:800px; border:1px solid #000;' cellpadding='10' cellspacing='0' align='center'> 
<tr> 
<td colspan='2' style='background-color:#009797; border-bottom:1px solid #000;'> 
<h1 style='text-align:center; color:#FFF;'>Pre-Registration Information</h1></td> 
</tr> 
    <td style='width:600px; vertical-align:top;'> 
<h4 style='font-family:Arial, Helvetica, sans-serif; color:#000;'><u>PATIENT INFORMATION</u></h4> 
<p style='font-family:Arial, Helvetica, sans-serif; font-size:.8em; color:#000; line-height:1.5em;'>Last Name:</p> 
+ txtLastName.Text + 
+0

通常、このようなクラスファイルにHTMLを書き出すことはありません。ユーザーコントロールを作成し、ユーザーコントロール内のビジネスロジックをコードの背後に置きます。あなたのメール送信クラス/メソッドでは、コントロールをページに投げることで実行されるのと同じ方法でユーザーコントロールを実行できますが、クライアントに送信されるhtml文字列を返すことができます。 –

答えて

0

私はこれを行うにはクリーンな方法はstring.Formatを使用することだと思います。最初にあなたの現在のHTMLをbodyHTMLとして定義しますが、文字列にはプレースホルダー({0}{1}など)を入れてください。

var body = string.Format(
    bodyHTML, 
    HttpUtility.HtmlEncode(yourTextBox.Text), 
    HttpUtility.HtmlEncode(yourOtherTextBox.Text)); 

HTMLのために適切にエンコードされた両方の値で、yourOtherTextBox.TextyourTextBox.Text{1}{0}を代用します。次に、このようなフォーム変数に差し込みます。

+0

私はいくつかの変数を持っています、約20、それらのすべてを保持するだろうか?私のコードで正確に何を変更する必要があるかを教えてください。 – user1091438

+0

あなたのフォーマット文字列には、あなたが望むだけ多くのプレースホルダーを入れることができます。 – Jacob

関連する問題