php imap_header,PHP imap取邮件时的搜索以及imap_mime_header_decode会自动截断标题

在使用imap读取邮件的时候,为了避免一次读取的全量的邮件,肯定需要用到imap_search,但这个imap_search用起来感觉并不像文档里展示的那么好用,我在使用SUBJECT搜索以及其它时间过滤时感觉过滤参数不起作用似的,反正我尝试通过SUBJECT搜索数字字符串未过滤成功,调试多次最终通过FROM和since来达到过滤目标邮件的作用。

实际imap_search功能挺多,但可能它的设计并不是按照中国人的使用习惯来的。比如since时间格式,看起来就很陌生。如下是通过FROM+SINCE条件来过滤邮件。

#imap_search通过FROM+SINCE条件来过滤邮件。$since=date("D, d M Y");$emails=imap_search($inbox,'FROM "test@04007.cn" SINCE "'.$since.' 00:00:00"');

上面的邮件过滤表示过滤发件邮箱是test@04007.cn且收到的时间从今天0时起的所有邮件。SUBJECT我没有搜索成功,不过我估计是编码转换的问题,我也没有去再尝试,基本上面的这两个条件能满足很多地方的需要。

除了imap_search之外,之前有篇文章也提过我找到了这个imap_mime_header_decode方法,能把邮件的标题解码出来,不过这两天在使用的时候发现它会自动截断标题,我原来没调试还怀疑是它对中文标题支持不够友好。输出调试后发现它会把文件名截断到几个stdClass Object中,但不知道为什么要这样做,毕竟这个标题并不长。这些我也没再去追究了,了解它的这个特点,然后在取标题的时候循环取一下text,不过建议不要用中文附件标题,phpspreadsheet在导入EXCEL中文名称附件时会稍麻烦。imap_mime_header_decode示例如下:

#将邮件标签进行解码输出$nameArr=imap_mime_header_decode($filename);print_r($nameArr);#输出内容Array([0]=>stdClassObject([charset]=>UTF-8[text]=>这只是一封测)[1]=>stdClassObject([charset]=>UTF-8[text]=>试邮件20)[2]=>stdClassObject([charset]=>UTF-8[text]=>20-05-24.xlsx))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值