我必须修复应用程序中的问题。该应用程序是部署到应用程序服务器的Oracle表单。流程末尾的表单是按下一个按钮,然后发送一封电子邮件。在按钮代码的末尾,它有一个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)都放在一行的末尾?
这是真的吗?这会是我的问题所在吗?
发布于 2012-07-24 04:23:05
电子邮件标准(RCF2822)规定,无论是源平台还是目标平台,都必须使用回车符和换行符(也称为CRLF或chr(13)+chr(10))分隔各行。这不是windows的问题。
通常,分隔标题时CRLF是最重要的,但它进一步将单行文本的长度限制为不超过998个字符,并且最好不超过78个字符(不含CRLF字符的1000、80)。
在RFC2822第2.3节中,它进一步声明主体只能包含CRLF,它们不能独立出现,因此很可能邮件基础结构的某些部分在第一个chr(10)处被截断。如果你想在正文中单独包含这样的字符,你需要使用不同形式的内容编码...例如,base64 (但这超出了您所要求的范围--我并不建议将其作为解决方案;)
话虽如此..。如果上面的代码是VBScript,那么应该使用&将两个字符串concatenate在一起(而不是||)。如果是plsql脚本,您是否确认该语句的输出是大量文本,而不仅仅是第一个字符串?
发布于 2012-07-24 04:20:34
电子邮件标准指定行应以CR/LF结尾(chr(13)/chr(10))。请参阅https://www.rfc-editor.org/rfc/rfc2822#section-2.1
通常,Windows文本文件遵循相同的格式。
https://stackoverflow.com/questions/11619820
复制相似问题