Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检测电子邮件的哪个部分具有HTML格式的正文_Php_Email_Imap - Fatal编程技术网

Php 检测电子邮件的哪个部分具有HTML格式的正文

Php 检测电子邮件的哪个部分具有HTML格式的正文,php,email,imap,Php,Email,Imap,我试着阅读两种不同类型的电子邮件 有一种邮件在第2部分下有html正文,我可以这样读 imap_fetchbody($imap_connection, $imap_msgno, '2'); 另一种是第1.2部分中的html主体,我使用下面的方法来获取主体 imap_fetchbody($imap_connection, $imap_msgno, '1.2'); 现在我的问题是,我如何知道电子邮件的html正文是哪一部分呢?我建议您使用一个库来处理这个问题 有一段时间我在处理邮件,这并不是那么

我试着阅读两种不同类型的电子邮件

有一种邮件在第2部分下有html正文,我可以这样读

imap_fetchbody($imap_connection, $imap_msgno, '2');
另一种是第1.2部分中的html主体,我使用下面的方法来获取主体

imap_fetchbody($imap_connection, $imap_msgno, '1.2');

现在我的问题是,我如何知道电子邮件的html正文是哪一部分呢?

我建议您使用一个库来处理这个问题

有一段时间我在处理邮件,这并不是那么容易。HTML正文可能有多个部分,例如当您回复某人的邮件时,其中一部分是原始邮件,另一部分是您在两个不同ID下的响应。获取电子邮件正文的最佳方法是解析imap_fetchstructure$imap_connection$imap_msgno;返回的对象;。但这是屁股痛,我知道我在说什么


回到我的建议,其中一个库是我的,你可以自由使用它:

我正在阅读这两个库,并试图找出哪个库有html

这是我的技巧,对我有用

$message = imap_fetchbody($imap_connection, $imap_msgno, '2'); 
//read the body assuming its type 2

//apply respective decoding function here. eg, imap_base64 OR imap_8bit 
//OR imap_qprint based on the email's encoding info.

if($message == strip_tags($message)) { //checking if the $message has html tags.
    //if no html, read the other part.
    $message = imap_fetchbody($imap_connection, $imap_msgno, '1.2');
    // ..... 
}

我很想使用你的库,看起来很棒,但不幸的是我没有太多时间来尝试一个新的库,我正在接受我发明的一个黑客[查看我的答案了解更多]谢谢!您是否尝试过使用更复杂的消息?例如,对另一封邮件的回复,其中包含附件?不,我只是在分析转发的特定类型的电子邮件。因此,所有其他类型的邮件附件、回复都将被忽略。