为了账号安全,请及时绑定邮箱和手机立即绑定

PHP imap_search:Microsoft Exchange邮件服务器上的UTF-8

PHP imap_search:Microsoft Exchange邮件服务器上的UTF-8

PHP
慕后森 2021-05-07 21:27:04
我想通过outlook.office365.com使用IMAP和PHP来获取电子邮件。由于大多数电子邮件都包含非ASCII字符(例如)äöü,因此我UTF-8在imap_search()函数中使用了:imap_search($mbox_connection, 'ALL', SE_UID, "UTF-8")通过UTF-8和搜索条件,ALL我收到了所有预期的电子邮件。现在,我想将其限制为例如仅看不见(未读)的电子邮件:imap_search($mbox_connection, 'UNSEEN', SE_UID, "UTF-8")但是不幸的是,这导致了问题,即使找不到电子邮件,也再也找不到电子邮件了,并且还会引发此PHP通知:PHP Notice:  Unknown: [BADCHARSET (US-ASCII)] The specified charset is not supported. (errflg=2) in Unknown on line 0基于此通知,我将字符集从更改UTF-8为US-ASCII:imap_search($mbox_connection, 'UNSEEN', SE_UID, "US-ASCII")现在,它将返回所有预期的未读(未读)电子邮件。现在的问题是,我无法搜索带有UTF-8字符的电子邮件。例如,我有一封包含以下信息的电子邮件:来自:ÄpfelNürnberg主题:Apfel与Äpfel身体:Einzahl gegen Mehrzahl.Ein Apfel, mehrere Äpfel.当我尝试搜索主题为“ apfel”的所有电子邮件时,它可以按预期方式工作-我可以找到该电子邮件:imap_search($mbox_connection, 'FROM "apfel"', SE_UID, "US-ASCII")Trying to connect to '{outlook.office365.com:993/imap/ssl}INBOX'...Found 1 email(s)...+------ P A R S I N G ------+From: =?iso-8859-1?Q?=C4pfel=20N=FCrnberg?= <=?iso-8859-1?Q?=C4pfel=20N=FCrnberg?= <aepfel@nuernberg.de>>Subject: =?iso-8859-1?Q?Apfel_vs._=C4pfel?=但是,当我改为搜索带有UTF-8字符的单词(在这种情况下äpfel)时,找不到电子邮件:imap_search($mbox_connection, 'FROM "äpfel"', SE_UID, "US-ASCII")由于这一事实,我已经从改回的字符集US-ASCII来UTF-8,但是这只是在错误信息再次结束[BADCHARSET (US-ASCII)]。我的代码很简单:$mailbox = "{outlook.office365.com:993/imap/ssl}INBOX";$mailbox_username = "someone@outlook.com";$mailbox_password = "*******";echo "Trying to connect to '$mailbox'...\n";$mbox_connection = imap_open($mailbox, $mailbox_username, $mailbox_password);$mailsIds = imap_search($mbox_connection, 'SUBJECT "äpfel"', SE_UID, "UTF-8");if(!$mailsIds) {    echo "No emails found!\n";    imap_close($mbox_connection);    die();}有什么想法,如何在电子邮件字段中搜索非ASCII字符From,Subject以及Body当IMAP服务器不支持UTF-8并且我也无法在服务器端配置上更改此字符时?这似乎是所有Microsoft Exchange服务器的问题。据我所知,只有那些服务器存在此问题。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 220 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信