2017-04-26 111 views
1

我試圖根據FormView中的標籤生成一些基本格式的電子郵件。我將使用Process.Start("mailto:...而不是System.Net.Mail的路由,以便在默認的電子郵件客戶端中打開電子郵件,以便用戶有機會編輯To:CC:等,而不用創建一個新窗體來處理該窗體。我有以下代碼隱藏來處理「電子郵件表單」按鈕,通過電子郵件發送網絡表單的URL。爲HTML電子郵件正文添加換行符字符串

protected void fvBF_ItemCommand(object sender, FormViewCommandEventArgs e) 
{ 
    if (e.CommandName == "Email") 
    { 
     Label lblBFID = (Label)fvBookingForm.FindControl("lblBFID"); 
     Label lblProjectID = (Label)fvBookingForm.FindControl("lblProjectNum"); 
     Label lblProjectName = (Label)fvBookingForm.FindControl("lblProjectName"); 
     Label lblReleaseName = (Label)fvBookingForm.FindControl("lblReleaseName"); 
     Label lblPMName = (Label)fvBookingForm.FindControl("lblPM"); 

     String strReleaseName = String.IsNullOrEmpty(lblReleaseName.Text) ? "[Description]" : lblReleaseName.Text; 

     String pmFirst = lblPMName.Text.ToString().Split()[0]; 
     String pmLast = lblPMName.Text.ToString().Split()[1]; 

     String strSubject = "BF " + lblBFID.Text + " - " + lblProjectName.Text + " - Release " + strReleaseName; 
     String strBody = "A Booking Form for Project #"+ lblProjectID.Text + " - " + lblProjectName.Text + 
      " - Release " + strReleaseName + " has been created or modified. \n\n" + Request.Url.ToString(); 

     Process.Start("mailto:" + pmFirst + "." + pmLast + "@company.com?subject=" + 
      HttpUtility.HtmlAttributeEncode(strSubject) + "&body=" + 
      HttpUtility.HtmlAttributeEncode(strBody).Replace("\n", Environment.NewLine)); 
    } 
} 

但是,當生成電子郵件時,「A Booking Form ....」句子和URL之間沒有換行符。我試過把Environment.NewLine直接放在字符串中。

...created or modified. " + Environment.Newline + Environment.NewLine + Request.Url.ToString();

這基本上給了我同樣的結果。我試圖用<br />替換\ n,它不會添加換行符,並且出於某種原因,也不會顯示URL。我只能猜測,問題與HtmlAttributeEncode()有關,並得到它來正確解析NewLine。有什麼我在這裏失蹤?

+0

你試過\ r \ n嗎? –

+0

你知道很多用戶最近沒有在他們的電腦上安裝電子郵件客戶端,只是使用基於Web的郵件?也許這是一個企業環境,你知道每個人都有Outlook,但對於公共應用程序來說,這不是一個好主意。 – mason

+0

它用於企業Intranet應用程序,Outlook是標準PC部署的一部分。那些將在BYOD設備上使用它的用戶不會使用電子郵件。 –

回答

1

你可能想試試.Replace("\r\n", "<br />")你已經完成了你的身體編碼。

+0

對代碼進行發送.Replace(「\ r \ n」,「
」)將適用於HTML格式郵件正文。 –

+0

這使我得到以下輸出,仍然在一行上。 '...創建或修改。
http:// localhost:49768/BookingForm/538' –

+0


將強制在html電子郵件中查看新行。 –

0

您應該在這裏使用StringBuilder而不是String。

然後,您可以執行以下操作:

StringBuilder builder = new StringBuilder(); 
builder.AppendLine(string.Format("A Booking Form for Project #{0} - {1}",lblProjectID.Text, lblProjectName.Text)); 
builder.AppendLine(string.Format(" - Release {0} has been created or modified.", strReleaseName)); 
builder.AppendLine(); 
builder.AppendLine(Request.Url.ToString()); 
String strBody = builder.ToString(); 

您也可以在您的字符串創建(焦炭)和10(炭)13。例如:

string.Format("First Line{0}{1}Second Line", (char)10, (char)13); 
相關問題