Javascript 换行符未显示在通过Sharepoint发送到Outlook的电子邮件中
我正在尝试设置一个临时Sharepoint页面,该页面显示一个表单,用户可以在其中输入一些文本并通过电子邮件发送。因此,我有一个页面,其中包含一个表单和一个提交按钮,该按钮调用一些JS将输入的文本放入Sharepoint的SOAP请求中,该请求将其添加到列表中,然后发送一封包含该信息的电子邮件。到目前为止,一切都很好,也没有什么痛苦 我遇到的问题是Outlook会忽略作为输入文本一部分的任何换行符。它们没有被任何东西剥离,因为我可以使用“查看源代码”选项,并在记事本中正常查看它们。我认为这是因为Outlook试图将邮件显示为HTML,而不知道如何处理它们。通常,我会加入一些JS,用Javascript 换行符未显示在通过Sharepoint发送到Outlook的电子邮件中,javascript,sharepoint,outlook,Javascript,Sharepoint,Outlook,我正在尝试设置一个临时Sharepoint页面,该页面显示一个表单,用户可以在其中输入一些文本并通过电子邮件发送。因此,我有一个页面,其中包含一个表单和一个提交按钮,该按钮调用一些JS将输入的文本放入Sharepoint的SOAP请求中,该请求将其添加到列表中,然后发送一封包含该信息的电子邮件。到目前为止,一切都很好,也没有什么痛苦 我遇到的问题是Outlook会忽略作为输入文本一部分的任何换行符。它们没有被任何东西剥离,因为我可以使用“查看源代码”选项,并在记事本中正常查看它们。我认为这是因为
标记替换\r\n
的所有实例,但将其放入SOAP请求只会导致标记后面的任何内容在添加到Sharepoint列表之前被切断
我试过的其他东西是
- 在每一新行的开头添加一对空格(无更改)
- 为每个换行符添加了第二组
(无更改)\r\n
- 将
的所有实例替换为\r\n
(显示为文本)%0D%0A
- 将
的所有实例替换为\r\n
(实际使用\par
,以避开第一个反斜杠)。(显示为文本)\\par
- 将
附加到\t
的所有实例。(不变)\r\n
- 在
。(显示句点,但未显示换行符)的所有实例前面加上“.”\r\n
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';
}
函数createAndPostSOAP(siteURL,listName)
{
var moreText=$(“#moreText”)[0];
var linebreakCount=moreText.match(/\r\n/g);
moreText=“”+moreText;
对于(变量计数=linebreakCount.length;计数>=0;计数--)
{
moreText=moreText.replace(“\r\n”和“[replace]”);
}
while(moreText.indexOf(“[replace]”)!=-1)
{
moreText=moreText.replace(“[replace]”,“\r\n”);
}
变量批=
" \
\
“+$(“文本”)[0]。值+”\
“+moreText+”\
\
";
var soapEnv=
" \
\
\
\
“+listName+”\
\
“+批处理+”\
\
\
";
$.ajax({
url:siteURL+“/\u vti\u bin/lists.asmx”,
发送前:函数(xhr){
xhr.setRequestHeader(“SOAPAction”http://schemas.microsoft.com/sharepoint/soap/UpdateListItems");
},
类型:“POST”,
数据类型:“xml”,
数据:soapEnv,
contentType:“text/xml;charset=utf-8”
});
window.location='starting_page.htm';
}
我主要是从Javascript的角度对此进行攻击,因为我比Sharepoint更了解这一点,但是在Sharepoint 2007中,有没有一种方法可以让脚本在数据已经添加到列中后将换行符更改为
?或者Javascript中有我遗漏的角度吗?您需要在代码中对所有HTML标记进行编码。& → & (ampersand)
< → < (less-than sign)
> → > (greater-than sign)
" → " (quotation mark)
' → ' (apostrophe)
&;→ & (安培)
→ < (小于符号)
→ > (大于号)
" → " (引号)
&载脂蛋白;→ ' (撇号)
请尝试以下代码:
String Input = "adding this text <br/> this in next line <>";
String Output = Server.HtmlEncode(Input);
//
String Input=“将此文本添加到下一行中”;
字符串输出=Server.HtmlEncode(输入);
//
如有需要
Output=Output.Replace(“\r\n”和“
”);
Output = Output.Replace("\r\n", "<br />");