1

我使用 php imap 并且遇到了麻烦。我需要获取正文和正文 html,但看起来不一定是这样,我的代码是:

$this->email['bodyHTML'] = quoted_printable_decode(imap_fetchbody($imap, $i, 2.2,FT_PEEK ));
        if(trim($this->email['bodyHTML']) == ''){
            $this->email['bodyHTML'] = imap_fetchbody($imap, $i, 1.2,FT_PEEK );
        }
        $this->email['bodyText'] = quoted_printable_decode(imap_fetchbody($imap,$i,1.1,FT_PEEK ));
        if(trim($this->email['bodyText']) == ''){
            $this->email['bodyText'] = quoted_printable_decode(imap_fetchbody($imap,$i,1,FT_PEEK ));
        }

执行 var_dump 时的输出是下面的文本。但这不是电子邮件文本:

[bodyHTML] => [bodyText] =>UGVyIGNvbXBldGVuemEuIEdyYXppZQ0KDQogDQoNCkRhOiBFbWFudWVsZSBQZXJzaWNvIFttYWls dG86ZS5wZXJzaWNvQGJsdXNlcnZpY2UuaXRdIA0KSW52aWF0bzogZ2lvdmVkw6wgMTAgbHVnbGlv IDIwMTQgMTc6NDQNCkE6IENyaW5pdGkgU29uaWENCkNjOiBOYXN0YSBFbWlsaWENCk9nZ2V0dG86 IEZ3ZDogSTogUml2aXN0YSBkaSBkaXJpdHRvIHByb2Nlc3N1YWxlIC0gY29kaWNlIGNsaWVudGUg MDAwMTY1NDc3Mw0KDQogDQoNCkNpYW8gU29uaWEsDQoNCmNvbiBsYSBwcmVzZW50ZSByZXN0aXR1 aWFtbyBsYSBwcmF0aWNhIGluZXJlbnRlIGlsIGNsaWVudGUgYy8xNjU0NzczIGRpIGNvbXBldGVu emEgSXBzb2EuDQoNCkdyYXppZSBFbWFudWVsZQ0KDQoNCg0KLS0tLS0tLS0gTWVzc2FnZ2lvIG9y aWdpbmFsZSAtLS0tLS0tLSANCg0KT2dnZXR0bzogDQoNCkk6IFJpdmlzdGEgZGkgZGlyaXR0byBw cm9jZXNzdWFsZSAtIGNvZGljZSBjbGllbnRlIDAwMDE2NTQ3NzMNCg0KRGF0YTogDQoNCk1vbiwg MTYgSnVuIDIwMTQgMTE6NTQ6MDEgKzAyMDANCg0KTWl0dGVudGU6IA0KDQpDcmluaXRpIFNvbmlh IDxTb25pYS5DcmluaXRpQHdraS5pdD4gPG1haWx0bzpTb25pYS5DcmluaXRpQHdraS5pdD4gDQoNCkE6IA0KDQo8Y2xpZW50aWdpdXJpZGljYUB3a2ltYWlsLml0PiA8bWFpbHRvOmNsaWVudGlnaXVy aWRpY2FAd2tpbWFpbC5pdD4gDQoNCg0KDQoNCg0KDQogIA0KDQogIA0KDQpEYTogTGlhIENhcm9s aW5hIEJhdGlzdGEgQ2ludHJhIFttYWlsdG86bGlhLmJhdGlzdGFAZ21haWwuY29tXSANCkludmlh dG86IG1lcmNvbGVkw6wgMTEgZ2l1Z25vIDIwMTQgMTQ6MjANCkE6IFNob3BXS0k7IEluZm8gQ29t bWVyY2lhbGkgV29sdGVyc0tsdXdlciBJdGFsaWE7IFNlcnZpemlvIENsaWVudGkgVXRldCBHaXVy aWRpY2ENCk9nZ2V0dG86IFJlOiBSaXZpc3RhIGRpIGRpcml0dG8gcHJvY2Vzc3VhbGUgLSBjb2Rp Y2UgY2xpZW50ZSAwMDAxNjU0NzczIA0KDQogIA0KDQpOb24gcmllc2NvIGEgY2FwaXJlIHBlcbWVyY2lhbGkgV29sdGVyc0tsdXdlciBJdGFsaWE7IFNlcnZpemlvIENsaWVudGkgVXRldCBHaXVy aWRpY2ENCk9nZ2V0dG86IFJlOiBSaXZpc3RhIGRpIGRpcml0dG8gcHJvY2Vzc3VhbGUgLSBjb2Rp Y2UgY2xpZW50ZSAwMDAxNjU0NzczIA0KDQogIA0KDQpOb24gcmllc2NvIGEgY2FwaXJlIHBlcbWVyY2lhbGkgV29sdGVyc0tsdXdlciBJdGFsaWE7IFNlcnZpemlvIENsaWVudGkgVXRldCBHaXVy aWRpY2ENCk9nZ2V0dG86IFJlOiBSaXZpc3RhIGRpIGRpcml0dG8gcHJvY2Vzc3VhbGUgLSBjb2Rp Y2UgY2xpZW50ZSAwMDAxNjU0NzczIA0KDQogIA0KDQpOb24gcmllc2NvIGEgY2FwaXJlIHBlc

4

1 回答 1

4

该数据是 base64 编码的。您需要检查Content-Transfer-Encoding标头:如果是quoted-printable,则将数据解码为quoted-printable,就像您在上面的代码中所做的那样,但如果它base64显示,则将数据解码为base64。

于 2014-07-11T10:47:55.003 回答