Windows中是否需要CHR(10)和CHR(13)?

时间:2012-07-23 20:14:41

标签: windows forms vbscript plsql cmd

我必须修复应用程序中的问题。该应用程序是部署到应用程序服务器的Oracle Form。最后的表单是按下按钮的过程,假设发送电子邮件。在按钮代码的末尾,它有一个PL / SQL代码,用于调用C:\中的CMD文件。当PL / SQL代码调用CMD文件时,它传递3个参数,这些参数是字符串变量。我有第三个问题。

这是第三个参数的样本:

'**假期请求**'|| chr(10)||

        '**********************'||chr(10)||chr(10)||

        '** Notice: Forward this mail to example@example.com'||chr(10)||

      '           stating whether the request is approved or rejected'||chr(10)||chr(10)||

        'Request Number   : '||:peticiones_vacaciones.codigo||chr(10)||

        'Date of Request  : '||to_char(:peticiones_vacaciones.fecha_peticion,'dd/mm/yyyy')||chr(10)||chr(10)|| 

cmd文件调用Vbscript创建一个Outlook对象,并将第三个变量作为HTML主体传递。

所有这一切的问题在于,当有人在电子邮件正文中收到此电子邮件时,只会看到第一行**假期请求**身体的其他所有部分都缺失。

我发现在使用vbscript的windows中你必须将CHR(10)和CHR(13)放在一行的末尾???

这是真的吗?这可能是我的问题吗?

2 个答案:

答案 0 :(得分:4)

电子邮件标准(RCF2822)表示无论是源平台还是目标平台,行必须通过回车符和换行符(又名CRLFchr(13)+chr(10))分隔[即。这不是一个Windows问题]。

通常,CRLF在分隔标题时最为重要,但它进一步将单行文本的长度限制为不超过998个字符,最好不超过78个字符(1000,80没有CRLF字符)。

在RFC2822第2.3节中,它进一步声明主体必须只包含CRLF ,它们不能独立出现,因此很可能某些邮件基础结构正在截断第一个chr(10)。如果你想在单独的主体中包含这些字符,你需要使用不同形式的内容编码... base64例如(但这超出了你所要求的范围 - 我是不建议作为解决方案;))

所有这些......如果您的上述代码是VBScript,那么您应该将&concatenate两个字符串一起使用(不是||)。如果它的plsql脚本你确认该语句的输出是大量的文本而不只是第一个字符串?

答案 1 :(得分:2)

电子邮件标准指定行应以CR / LF结尾(chr(13)/ chr(10))。见http://tools.ietf.org/html/rfc2822#section-2.1

通常,Windows文本文件采用相同的格式。