如何解码电子邮件中的主题?

| 我已发送主题行为
[BILLING #PHY-945-49853]: [Ticket #12622] Payment Method
但是在消息的来源中,该行如下所示
Subject: =?UTF-8?B?W1NBTEVTICNCQk4tOTM1LTM3OTE3XTogW1RpY2tldCAjMTI2MjJdIFBheW1lbnQ=?=
=?UTF-8?B?IE1ldGhvZA==?=
它在Base64中编码。如何使用php将其解码回英语的原始主题行?我已经尝试过使用php
base64_decode($subject)
,但是它并未将其解码为原始主题([BILLING#PHY-945-49853]:[Ticket#12622]付款方式) 我还附有示例电子邮件:
Return-Path: .........
X-Original-To: ..........
Delivered-To: ........
Received: ......
X-DKIM: ........
Received:....
To: ....
Subject: =?UTF-8?B?W1NBTEVTICNCQk4tOTM1LTM3OTE3XTogW1RpY2tldCAjMTI2MjJdIFBheW1lbnQ=?=
=?UTF-8?B?IE1ldGhvZA==?=
From: =?UTF-8?B?U0FWVllFSE9TVElORyBTQUxFUw==?=
X-Priority: ..
X-MSMail-Priority: normal
X-MimeOLE: Produced By Kayako Fusion v4.01.204
X-Mailer: Kayako Fusion v4.01.204
Reply-To: .......
Date: .....
Content-Type: multipart/alternative;
boundary=\"=_1.64496c432f57488924404b338155a2d7\"
MIME-Version: 1.0
Message-Id: ....
这是MIME格式的消息。如果看到此消息,则您的邮件阅读器不支持此格式。
--=_1.64496c432f57488924404b338155a2d7
Content-Type: text/plain;
charset=\"UTF-8\"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline


------------------------------------------------------
Support Center:
Content-Type: text/html;
charset=\"UTF-8\"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline
    
已邀请:
您可能正在寻找iconv_mime_decode。 从链接:
string iconv_mime_decode ( string $encoded_header [, int $mode = 0 [, string $charset = 
ini_get(\"iconv.internal_encoding\") ]] )
     解码MIME标头字段。 你的例子:
echo iconv_mime_decode($string);
产量:
Subject: [SALES #BBN-935-37917]: [Ticket #12622] Payment
    
我也遇到了这个问题,并想出了另一种方法来解决此问题。对于未来的其他人来说,这可能会有所帮助。 一旦意识到消息的哪一部分实际上是字符串的Base64部分,就将这些代码拼凑在一起。
if(stripos($subject, \"=?utf-8?b?\") !== false) {
    $output = str_ireplace(\"=?utf-8?B?\", \"\", $subject);
    $output = str_replace(\"==?=\", \"\", $output);
    $output = base64_decode($output);
}else{
    $output = $subject;
}
实际上,您正在执行的操作是检测字符串是否位于面base64中。然后修剪标识符,然后用ѭ9解码 确保使用字符串功能的不区分大小写的版本,因为并非所有邮件提供程序都使用大写或小写字母。 **很抱歉回答一个老问题,但我发现这是一个更有用的选择。     

要回复问题请先登录注册