引用打印的 MIME 消息中的 CRLF
CRLF in the quoted-printable MIME message
我有一个多部分的 MIME 消息,其中一部分看起来像
------=_Part_901_990681075.1528833507
Content-Disposition: attachment; filename="metadata.txt"
Content-ID: 3314a2d3-6092-48c3-93d9-a45648b6582b@localhost
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
version: 1.0=0Aid: 13848078-9bc3-4ec1-8cb0-3ee07d74f1cb=0Auser: givenName=
=3DJohn; middleName=3DJacob; surname=3DDoe; dateOfBirth=3D=0A=3D1970-01-01;=
gender=3DM; postalCode=3D12345
但收件人说这是格式错误的元数据部分,因为 =0A
应替换为真正的 CRLF。
我知道它是 quoted-printable
编码的 CRLF 表示,但这不是收件人所期望的。
为了创建元数据部分,我使用了 PHP 代码:
$sMetadata = "version: 1.0
id: $sTrancasctionId
user: givenName=$sUserFirstName; middleName=$sUserMiddleName; surname=$sUserLastName; dateOfBirth=
=$sUSerDOB; gender=$sUserGender; postalCode=$sUserPostalCode";
然后我使用现有的 MailSo 框架将其添加到现有的消息对象中。
关于这件事有什么建议吗?
如评论中所述,=0A
仅代表 CRLF 的换行 (LF) 部分。因此,代码可能与仅由 LF 组成的 Unix 换行符一起存储,而 MIME 表示形式需要 CRLF。
直接在 $sMetadata
行之后使用此命令,您可以将所有换行符转换为 CRLF:
$sMetadata = preg_replace('/\R/', "\r\n", $sMetadata);
我有一个多部分的 MIME 消息,其中一部分看起来像
------=_Part_901_990681075.1528833507
Content-Disposition: attachment; filename="metadata.txt"
Content-ID: 3314a2d3-6092-48c3-93d9-a45648b6582b@localhost
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
version: 1.0=0Aid: 13848078-9bc3-4ec1-8cb0-3ee07d74f1cb=0Auser: givenName=
=3DJohn; middleName=3DJacob; surname=3DDoe; dateOfBirth=3D=0A=3D1970-01-01;=
gender=3DM; postalCode=3D12345
但收件人说这是格式错误的元数据部分,因为 =0A
应替换为真正的 CRLF。
我知道它是 quoted-printable
编码的 CRLF 表示,但这不是收件人所期望的。
为了创建元数据部分,我使用了 PHP 代码:
$sMetadata = "version: 1.0
id: $sTrancasctionId
user: givenName=$sUserFirstName; middleName=$sUserMiddleName; surname=$sUserLastName; dateOfBirth=
=$sUSerDOB; gender=$sUserGender; postalCode=$sUserPostalCode";
然后我使用现有的 MailSo 框架将其添加到现有的消息对象中。
关于这件事有什么建议吗?
如评论中所述,=0A
仅代表 CRLF 的换行 (LF) 部分。因此,代码可能与仅由 LF 组成的 Unix 换行符一起存储,而 MIME 表示形式需要 CRLF。
直接在 $sMetadata
行之后使用此命令,您可以将所有换行符转换为 CRLF:
$sMetadata = preg_replace('/\R/', "\r\n", $sMetadata);