oracle - rfc2047 电子邮件主题中的多个编码字

标签 oracle email

我需要发送一封主题包含西里尔字母的电子邮件。但是由于邮件服务器和/或客户端的某些问题,我的收件人有时会收到错误的信件。我总是以 windows-1251 编码发送电子邮件,但有时邮件客户端会以另一种编码 (KOI-8R) 显示信件的主题和发件人,而我们的用户无法理解信息。 我尝试使用 RFC 2047 标准中描述的编码字标签。例如,我在电子邮件中的主题字段现在看起来像:

Subject: =?WINDOWS-1251?B?wiDt5eTw4PUg8vPt5PD7IOL75PD7IOIg4+Xy8OD1IPL78P/yIOIg4uXk8OAg/+Tw?=
=?WINDOWS-1251?B?4CDq5eTw4C4gwvvw4uDiIPEg4vvk8Psg4iDy8+3k8OUg4+Xy?=
=?WINDOWS-1251?B?8PssIOL78vDzIOL75PDu6SD/5PDgIOrl5PDgLCDi+/Lw8yDj?=
=?WINDOWS-1251?B?5fLw7ukg4vvk8OUg7O7w5PMsIP/k8OAg4iDi5eTw4Cwg4vvk?=
=?WINDOWS-1251?B?8PMg4iDy8+3k8PMu?=

这些行是由 Oracle 函数 UTL_ENCODE.MIMEHEADER_ENCODE 生成的。

所有邮件客户端(Lotus Notes、gmail.com)仅显示此类电子邮件主题的第一行(仅前 48 个符号)。 我的邮件主题有什么问题?

最佳答案

问题是,根据 RFC 2822,您没有正确折叠。要在标题中制作多行字段,每行必须以空格开头。

你需要做的是:

replace(UTL_ENCODE.MIMEHEADER_ENCODE(subject, 'UTF8', UTL_ENCODE.BASE64), UTL_TCP.CRLF, UTL_TCP.CRLF || ' ')

这应该可以解决您的问题。

关于oracle - rfc2047 电子邮件主题中的多个编码字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15264168/

相关文章:

email - 托管电子邮件黑名单问题

php - 如何在后台使用PHPMailer发送邮件?

SQL:SQL 异或

oracle - 使 PL/SQL 存储过程在发生异常时回滚所有更改?

javascript - 如何使用jsp变量在javascript中运行oracle查询?

Java 数据库 (oracle) odbc 驱动程序不匹配

oracle - 在 Oracle 存储过程中创建和使用序列 - 序列不存在

c# - 来自网站的每日电子邮件提醒

node.js - Nodemailer 不适用于 Amazon EC2 实例

标记为垃圾邮件的电子邮件 - SPF 通过、DKIM 通过、发件人 ID 通过