【问题标题】:Is both CHR(10) and CHR(13) needed in windows?Windows 中是否需要 CHR(10) 和 CHR(13)?
【发布时间】:2012-07-23 20:14:40
【问题描述】:

我必须解决应用程序中的问题。该应用程序是部署到应用程序服务器的 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 文件调用创建 Outlook 对象并将第三个变量作为 HTML 正文传递的 Vbscript。

所有这一切的问题在于,当有人在电子邮件正文中收到这封电子邮件时,只会看到第一行是 ** VACATION REQUEST ** 正文的所有其他部分都丢失了。

我发现在带有 vbscript 的 Windows 中,您必须将 CHR(10) 和 CHR(13) 放在一行的末尾 ???

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

【问题讨论】:

    标签: windows forms vbscript plsql cmd


    【解决方案1】:

    电子邮件标准 (RCF2822) 规定,无论源平台或目标平台如何,行都必须用回车和换行符分隔(又名 CRLFchr(13)+chr(10))[即。这不是 Windows 问题]。

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

    在 RFC2822 第 2.3 节中,它进一步指出正文必须只包含 CRLFtogether,它们不能独立出现,因此很可能邮件基础设施的某些部分首先被截断@ 987654326@。如果您只想在正文中包含此类字符,则需要使用不同形式的内容编码...例如base64(但这超出了您要求的范围-我不是建议作为解决方案;))

    所有这一切...如果您的上述代码是 VBScript,您应该同时使用 &concatenate 两个字符串(而不是 ||)。如果是 plsql 脚本,您是否确认该语句的输出是大量文本而不仅仅是第一个字符串?

    【讨论】:

    • 感谢您的回答,我会试试的! ||在 PL/SQL 中使用,因为字符串是在表单内部构建的,然后作为参数传递到调用 vbscript 的 cmd 文件中,上面的代码是生成字符串的 PL/SQL 代码。
    • 我最后自己找到了一个解决方案,这段代码是一个 HTML 代码,所以我用
      替换了所有 chr (10) & (13),这样我就可以使用 html 标签来塑造我的文本因为html毕竟是结果
    【解决方案2】:

    电子邮件标准指定行应以 CR/LF (chr(13)/chr(10)) 结尾。见https://www.rfc-editor.org/rfc/rfc2822#section-2.1

    通常 Windows 文本文件遵循相同的格式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-05
      • 2014-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多