我試圖根據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。有什麼我在這裏失蹤?
你試過\ r \ n嗎? –
你知道很多用戶最近沒有在他們的電腦上安裝電子郵件客戶端,只是使用基於Web的郵件?也許這是一個企業環境,你知道每個人都有Outlook,但對於公共應用程序來說,這不是一個好主意。 – mason
它用於企業Intranet應用程序,Outlook是標準PC部署的一部分。那些將在BYOD設備上使用它的用戶不會使用電子郵件。 –