我正在尝试设置一个临时的 Sharepoint 页面,该页面提供一个表单,用户可以在其中输入一些文本并将其通过电子邮件发送出去。因此,我有一个包含表单和提交按钮的页面,该按钮调用一些 JS 将输入的文本放入 Sharepoint 的 SOAP 请求中,该请求将其添加到列表中,然后发送包含该信息的电子邮件。到目前为止一切顺利,而且非常无痛。
我遇到的问题是 Outlook 会忽略作为输入文本一部分的任何换行符。它们不会被任何东西删除,因为我可以使用“查看源代码”选项并在记事本中正常查看它们。我认为这是因为 Outlook 试图将消息显示为 HTML 并且不知道如何处理它们。通常情况下,我只是放入一些 JS 来替换\r\n
with<br />
标签的所有实例,但将其放入 SOAP 请求只会导致标签后面的任何内容在添加到 Sharepoint 列表之前被切断。
我尝试过的其他事情是
- 在每个新行的开头添加一对空格(无变化)
\r\n
为每个换行符添加了第二组(没有变化)\r\n
替换了with的所有实例%0D%0A
(显示为文本)- 将所有实例替换为
\r\n
(\par
实际使用\\par
,以转义第一个反斜杠)。(显示为文本) - 附加
\t
到\r\n
. (没变) - 前置'.' 的所有实例
\r\n
。(显示句点,但不显示换行符)
我正在使用 Outlook 2007、Sharepoint 2007 和 Internet Explorer 8。
我已阅读以下问题:
这是我用来编辑文本以及创建和发布 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 更好,但是在 Sharepoint 2007 中有没有办法让脚本<br />
在数据已经添加到列后将换行符更改为?还是我在 Javascript 中遗漏了一个角度?