关于通过PHP进行IMAP的一些问题

时间:2013-10-09 09:20:45

标签: php imap

我正在试图弄清楚如何以这种方式自定义这段PHP代码,以便根据我收到的PHP错误通知设置两个特定条件。

<?php

/* connect to yahoo */

$hostname = '{imap.mail.yahoo.com:993/imap/ssl}INBOX';

$username = 'user@yahoo.com';

$password = 'password';

$alerts = imap_alerts()



/* try to connect */

$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to yahoo: ' . $alerts);

 if ( $inbox === false ) {

exit ("Can't connect: " . imap_last_error() ."\n");

}

else

{

echo"Logined:";

//do stuff

}


?>

我想要完成的是:

  1. 连接到IMAP服务器。
  2. 检查用户/密码组合是否正确,如果是,请登录(我已覆盖)。
  3. 如果不是,我只会收到一条IMAP错误,说“登录失败太多”。
  4. 如果是,但我试图从雅虎无法识别的位置登录,也就是说,我之前从未登录过,我会得到同样的错误。
  5. 根据用户/通行证组合是否不正确,或者无法识别位置,将用户重定向到“page1”或“page2”。
  6. imap_last_error为两种情况都返回相同的错误。但是,错误警报(imap_alerts)对于这两种情况都是不同的,这是我可以区分它们的地方。

    如何设置它以便在它尝试登录时收到包含特定文本字符串的错误通知时,它只会读取该文本字符串(根本不显示错误),并重定向到“1”还是“2”?

    重定向本身应该不是问题。分化是什么让我在这里绊倒。我希望收到的IMAP通知被转储到文本文件中(或者,理想情况下,直接读取),并且,根据它是否包含“字符串A”或“字符串B”,下一个脚本操作将重定向到第1页或第2页。

    IMAP错误的用户/通行证组合通知:

    注意:未知:[AUTHORIZATIONFAILED]用户名或密码不正确。

    IMAP未知位置通知:

    注意:未知:[AUTHORIZATIONFAILED]请在https://login.yahoo.com验证您的帐户。

1 个答案:

答案 0 :(得分:-1)

在使用

之后,阻止错误在您的案例@imap_open中的函数前显示使用@
imap_errors();
imap_alerts();

以获取错误:

$errors = imap_errors();
for ($i=0; $i<count($errors); $i++) {
   echo "{$errors[$i]} <BR>\n";
}