2011-12-20 50 views
0

在過去,我已經使用類似這樣的形式發送表單字段的電子郵件形式的asp.net,我想格式更多的HTML電子郵件,但我沒有知道如何將文本框的值傳遞給消息可以有人幫助我嗎?如何在電子郵件正文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字符串。 – 2011-12-21 00:41:50

回答

0

我認爲這樣做最徹底的方法是使用string.Format。首先定義您的HTML,如您目前在bodyHTML中所做的那樣,但在字符串中使用了像{0}{1}這樣的佔位符。然後,插入您的表單變量是這樣的:

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

這將取代{0}yourTextBox.Text{1}yourOtherTextBox.Text,與對HTML編碼正確這兩個值。

+0

我有幾個變量,大約20,是否可以容納所有這些變量?你能告訴我什麼需要改變我的代碼 – user1091438 2011-12-21 00:04:12

+0

你的格式字符串可以包含儘可能多的佔位符,所以這種技術應該工作。 – Jacob 2011-12-21 04:32:26

相關問題