我試圖設置一個臨時Sharepoint頁面,其中顯示一個表單,用戶可以在其中輸入一些文本並通過電子郵件發送。所以我有一個包含表單和提交按鈕的頁面,它調用一些JS將輸入的文本放入Sharepoint的SOAP請求中,該請求將其添加到列表中,然後發送包含該信息的電子郵件。到目前爲止非常好,而且非常無痛。Linebreaks在通過Sharepoint發送到Outlook的電子郵件中不顯示
我遇到的問題是Outlook忽略任何屬於輸入文本的換行符。它們不會被任何東西剝離,因爲我可以使用「查看源代碼」選項並在記事本中正常看到它們。我認爲這是因爲Outlook試圖將消息顯示爲HTML並且不知道如何處理它們。通常,我只是拋出一些JS代替\r\n
的所有實例和<br />
標記,但將其放入SOAP請求中只會導致標記在被添加到Sharepoint列表之前被切斷的任何內容。
其他的事情都是
- 在每個新行的開始(無變化)
- 增加了第二組的
\r\n
每一個換行符(無變化) 再配上一雙的空間
- 代替的
\r\n
所有實例與%0D%0A
(顯示爲文本) - 與
\par
代替的\r\n
所有實例(實際使用的\\par
,以躲避第一BA ckslash)。 (顯示爲文本) - 附加
\t
到\r\n
的所有實例。 (無變化) - 前綴'。'到
\r\n
的所有實例。 (時間顯示,但換行沒有)
我與Outlook 2007,SharePoint和Internet Explorer的工作8.
我讀過的問題:
- javascript email linebreaks
- How do I format a string in an email so Outlook will print the line breaks?
- How to break line in Javascript
- Outlook autocleaning my line breaks and screwing up my email format
這是我正在編輯的文本以及創建和發佈SOAP請求的JS函數。它是目前設置的每個斷行前放置時間:
function createAndPostSOAP(siteURL, listName)
{
var moreText = $("#MoreText")[0].innerText;
var linebreakCount = moreText.match(/\r\n/g);
moreText= " " + moreText;
for (var count = linebreakCount.length; count >= 0; count--)
{
moreText = moreText.replace("\r\n", ".[replace]");
}
while(moreText.indexOf("[replace]") != -1)
{
moreText = moreText.replace("[replace]", "\r\n");
}
var batch =
"<Batch OnError='Continue'> \
<Method ID='1' Cmd='New'> \
<Field Name='Text'>" + $("Text")[0].value + "</Field> \
<Field Name='MoreText'>" + moreText + "</Field> \
</Method> \
</Batch>";
var soapEnv =
"<?xml version='1.0' encoding='utf-8'?> \
<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' \
xmlns:xsd='http://www.w3.org/2001/XMLSchema' \
xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'> \
<soap:Body> \
<UpdateListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'> \
<listName>" + listName + "</listName> \
<updates> \
" + batch + "</updates> \
</UpdateListItems> \
</soap:Body> \
</soap:Envelope>";
$.ajax({
url: siteURL + "/_vti_bin/lists.asmx",
beforeSend: function(xhr) {
xhr.setRequestHeader ("SOAPAction", "http://schemas.microsoft.com/sharepoint/soap/UpdateListItems");
},
type: "POST",
dataType: "xml",
data: soapEnv,
contentType: "text/xml; charset=utf-8"
});
window.location='starting_page.htm';
}
我主要從JavaScript結束攻擊這一點,因爲我知道比改善SharePoint,但有2007年的Sharepoint的方式有一個腳本變化一旦數據已經添加到列中,則換行爲<br />
?或者在Javascript中錯過了一個角度?