首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何解码电子邮件中的主题?

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

Stack Overflow用户
提问于 2011-05-26 13:08:52
回答 2查看 8.3K关注 0票数 7

我已经发送了一封邮件,主题行为

代码语言:javascript
运行
复制
[BILLING #PHY-945-49853]: [Ticket #12622] Payment Method

但在消息源中,这行代码如下所示

代码语言:javascript
运行
复制
Subject: =?UTF-8?B?W1NBTEVTICNCQk4tOTM1LTM3OTE3XTogW1RpY2tldCAjMTI2MjJdIFBheW1lbnQ=?=
=?UTF-8?B?IE1ldGhvZA==?=

它是用Base64编码的。如何使用php将其解码回英文的原始主题行?我试过用php base64_decode($subject),但它不能解码成原始主题(账单#PHY945-49853:标签#12622付款方式)

我还附上了一封示例电子邮件:

代码语言:javascript
运行
复制
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格式的邮件。如果您看到此消息,则表明您的邮件阅读器不支持此格式。

代码语言:javascript
运行
复制
--=_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
EN

回答 2

Stack Overflow用户

发布于 2011-05-26 13:21:27

你可能在找iconv_mime_decode

从链接:

string iconv_mime_decode ( string $encoded_header [, $mode =0,string $charset = ini_get("iconv.internal_encoding") ])

解码MIME标头字段。

您的示例:

代码语言:javascript
运行
复制
echo iconv_mime_decode($string);

收益率:

代码语言:javascript
运行
复制
Subject: [SALES #BBN-935-37917]: [Ticket #12622] Payment
票数 21
EN

Stack Overflow用户

发布于 2016-03-21 05:58:12

我也遇到了这个问题,并想出了一个替代方案来解决这个问题。对于将来寻找的其他人来说,这可能会有一些帮助。

一旦我意识到消息的哪一部分实际上是字符串的Base64部分,我就把这些代码拼凑在一起;

代码语言:javascript
运行
复制
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;
}

实际上,您正在做的是检测到字符串在face base64中。然后在使用base64_decode()解码之前对标识符进行修剪

确保使用不区分大小写的字符串函数,因为并非所有邮件提供商都坚持大小写。

**很抱歉回答一个老问题,但我发现这是一个更有用的替代方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6133943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档