我想在php中使用IMAP获取只有.ics文件的电子邮件
MPI_scatter
我使用上面的搜索代码我需要一些条件而不是"所有"或imap_search通过某些扩展名(.ics)给我发送电子邮件的.ics
答案 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日历内容