我必须修复应用程序中的问题。该应用程序是部署到应用程序服务器的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)放在一行的末尾???
这是真的吗?这可能是我的问题吗?
答案 0 :(得分:4)
电子邮件标准(RCF2822)表示无论是源平台还是目标平台,行必须通过回车符和换行符(又名CRLF
或chr(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文本文件采用相同的格式。