用于ics文件的IMAP map_search()

时间:2016-03-09 06:15:54

标签: php email imap

我想在php中使用IMAP获取只有.ics文件的电子邮件

MPI_scatter

我使用上面的搜索代码我需要一些条件而不是"所有"或imap_search通过某些扩展名(.ics)给我发送电子邮件的.ics

3 个答案:

答案 0 :(得分:0)

您可以使用此功能搜索电子邮件中的特定提示。

<?php $keyword=".ics";
 $emails = imap_search($inbox,'BODY "'.$keyword.'"', SE_FREE, "UTF-8"); 
?>

答案 1 :(得分:0)

搜索键header content-disposition ".ics"可能有效,也可能无效。取决于服务器。

IMAP在这方面的定义不太明确。

  HEADER <field-name> <string>
     Messages that have a header with the specified field-name (as
     defined in [RFC-2822]) and that contains the specified string
     in the text of the header (what comes after the colon).  If the
     string to search is zero-length, this matches all messages that
     have a header line with the specified field-name regardless of
     the contents.

因此字段名称必须如2822中所定义。但是电子邮件消息包含三种标题(顶级消息标题,嵌入消息/ 822标题和最终的bodypart标题),并且所有三种都使用该语法。我怀疑大多数服务器搜索第一种标头或全部三种,并且RFC的作者记得前两种。

那你为什么不尝试使用目标服务器的搜索键,如果它有效,它就可以工作。

答案 2 :(得分:0)

感谢各位朋友,我得到了问题的确切解决方案

我首先通过imap_open打开连接,然后搜索电子邮件

$imap_search($inbox, 'ALL')

然后通过imap_fetchstructure获取电子邮件的结构,并从该结构我从附件获取ics文件,最后形成附件我得到了imap body imap_base64(imap_fetchbody($mbox, $mid, 2));

它会给我实际的.ics日历内容