2012-04-18 19 views
12

我從形式Javascript語言,將斷行的mailto體

firstname = bob 
    lastname = dole 

    ebody = 'First Name: ' + firstname + '\r\n' + 'Last Name: ' + lastname 

    window.location.href = 'mailto:[email protected]?subject=test 
    email&body=' + ebody; 

設置使用值的電子郵件的正文如果我做一個「警報(ebody);」我在第一個姓氏& 姓氏之間得到了換行符,但是當它打開outlook時,整個ebody字符串 在電子郵件正文中沒有換行符出現。

我也試過\ n。有什麼可以給一條線 休息嗎?

在此先感謝

+0

只是一個想法,你有沒有試着逃跑,比如'\\ \\ [R的N'反斜槓? – inhan 2012-04-18 23:56:59

+1

你嘗試過編碼字符嗎? - >'%0D%0A' – GNi33 2012-04-18 23:57:32

+2

您的電子郵件的MIME類型是純文本還是純文本? Outlook可能試圖將其解釋爲富文本。 – g13n 2012-04-18 23:58:12

回答

32

RFC 2368表示mailto正文內容必須是URL編碼的,對於通常在URL中編碼的字符使用%-escaped形式。這些字符包括空格和(如2368第5節明確指出的)CR和LF。

您可以通過編寫

ebody = 'First%20Name:%20' + firstname + '%0D%0A' + 'Last%20Name:%20' + lastname; 

做到這一點,但它更容易和更好的JavaScript爲你做的逃避,是這樣的:

ebody = 'First Name: ' + firstname + '\r\n' + 'Last Name: ' + lastname; 
ebody = encodeURIComponent(ebody); 

不僅會爲您節省不必識別和查找需要在固定文本中編碼的字符的十六進制值,它還將編碼firstnamelastname變量中的任何高賤字符。

+0

感謝您的指導,它工作正常 – srini 2012-04-19 09:25:34

1

我希望的前景,試圖輸出這是HTML /富文本所以在這種情況下,你需要像以下(包括urlencoded的BR標籤):

firstname = bob 
    lastname = dole 

    ebody = 'First Name: ' + firstname + '%3C%2Fbr%3E' + 'Last Name: ' + lastname 

    window.location.href = 'mailto:[email protected]?subject=test 
    email&body=' + ebody; 
+0

感謝您的指導,它工作正常 – srini 2012-04-19 09:25:47