2011-05-26 15 views
6

मैं के रूप मेंकिसी ईमेल में विषय को डीकोड कैसे करें?

[BILLING #PHY-945-49853]: [Ticket #12622] Payment Method 

लेकिन संदेश के स्रोत लाइन की तरह नीचे

Subject: =?UTF-8?B?W1NBTEVTICNCQk4tOTM1LTM3OTE3XTogW1RpY2tldCAjMTI2MjJdIFBheW1lbnQ=?= 
=?UTF-8?B?IE1ldGhvZA==?= 

यह Base64 में एन्कोड किया गया है है में विषय पंक्ति के साथ एक मेल भेजने के लिए है । मैं php का उपयोग कर अंग्रेजी में मूल विषय पंक्ति पर इसे कैसे डीकोड कर सकता हूं? मैंने php base64_decode($subject) के साथ प्रयास किया है लेकिन यह मूल विषय ([बिलिंग # PHY-945-49853]: [टिकट # 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: .... 

यह एमआईएम प्रारूप में एक संदेश है। यदि आप इसे देखते हैं, तो आपका मेल रीडर इस प्रारूप का समर्थन नहीं करता है।

--=_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 

उत्तर

14

शायद आप 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 
+0

संबंधित [मेटा पोस्ट] (http://meta.stackoverflow.com/q/291879/55075)। – kenorb

0

मैं भी इस मुद्दे था और इसके समाधान के लिए एक वैकल्पिक मार्ग के साथ आया था। भविष्य में किसी और के लिए, यह कुछ सहायता का हो सकता है।

मैंने यह कोड एक साथ पा लिया जब मुझे एहसास हुआ कि संदेश का कौन सा हिस्सा वास्तव में स्ट्रिंग का बेस 64 भाग है;

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; 
} 

प्रभावी रूप से आप जो कर रहे हैं वह यह पता लगा रहा है कि स्ट्रिंग फेस बेस 64 में है। और फिर base64_decode()

के साथ इसे डीकोड करने से पहले पहचानकर्ताओं को ट्रिम करना सुनिश्चित करें कि आप स्ट्रिंग फ़ंक्शंस के केस-असंवेदनशील संस्करणों का उपयोग करें क्योंकि सभी मेल प्रदाता ऊपरी या निचले मामले के साथ चिपके रहते हैं।

** पुराने प्रश्न का उत्तर देने के लिए खेद है, लेकिन मुझे यह एक और अधिक उपयोगी विकल्प मिला।

संबंधित मुद्दे