Asp classic &引用+&引用;未打开包含电子邮件文件名的符号
我试图通过提供如下URL来打开电子邮件Asp classic &引用+&引用;未打开包含电子邮件文件名的符号,asp-classic,Asp Classic,我试图通过提供如下URL来打开电子邮件 mailUrl = "/Inbox/test%20mail%20%2B%20to%20verify%20%2B%20symbol.EML" oXMLHttp.open("PROPFIND", mailUrl, false, strUser, strPass); %20 - space %2B - + 它返回未找到文件错误,但文件在那里。我面临的问题是,每当在文件名中使用+符号时,获取文件未找到错误。因为命名约定是非法的。避免在文件名中使用非字母数字
mailUrl = "/Inbox/test%20mail%20%2B%20to%20verify%20%2B%20symbol.EML"
oXMLHttp.open("PROPFIND", mailUrl, false, strUser, strPass);
%20 - space
%2B - +
它返回
未找到文件
错误,但文件在那里。我面临的问题是,每当在文件名中使用+
符号时,获取文件未找到错误。因为命名约定是非法的。避免在文件名中使用非字母数字字符。使用这些字符可能会导致问题,另外,文件名不能超过128个字符
阅读下面的链接,它们有助于理解并列出文件名中需要避免的符号:
在传递到oXMLhttp.open()
函数之前,您可以尝试清理输入(文件名),如下所示:
string mailUrl = "/Inbox/test%20mail%20%2B%20to%20verify%20%2B%20symbol.EML"
private static string SanitizeFileName(string name)
{
string invalidChars = Regex.Escape( new string( Path.GetInvalidFileNameChars() ) );
string invalidReStr = string.Format( @"[{0}]+", invalidChars );
return Regex.Replace( name, invalidReStr, "_" );
}
validFileName = SanitizeFileName(mailUrl);
oXMLHttp.open("PROPFIND", validFileName, false, strUser, strPass);
你好,RobbNesp,谢谢你的建议。实际上,每当用户发送邮件时,邮件都将以.EML格式存储在exchange服务器中。我们有两个功能,一个将列出页面中所有未读邮件,另一个在单击特定列表时,将打开该邮件的正文内容。对于显示列表,我们使用搜索和文件夹路径。因此,它将显示所有列表,包括“+”符号文件名。但是当打开那个特定的电子邮件时,我们遇到了这个错误。我建议您对它进行清理以删除非法字符。是的,我也尝试了这个URL,“/Inbox/test mail+to verify+symbol.EML”。找不到相同的文件状态。更新并合并我的答案。抱歉,mod,重复发布了答案。@E.Veerabhadran这不是sanitize,您所做的是解码URL编码。检查我的更新答案,其中“+”将替换为“\u1”。