使用IMAP读取服务器上的邮件


Reading mails on server with IMAP?

我正在设置一个"类似代理"的电子邮件,通知电子邮件将发送给他订阅的用户,但他可以回复应该包含他的回复的电子邮件notification@site.com。在服务器端,我希望能够阅读他的电子邮件并将他的回复添加到数据库中——电子邮件存储在notification用户收件箱中,这很好,现在可以用PHP阅读了。

所以,我一直在寻找解决方案,很多解决方案都是IMAP,所以我想试试,但我似乎无法找到我的连接,我的服务器无法打开收件箱。我已经适应了不同的端口,但没有一个能够连接。

imap_open("{localhost/imap:143}", "notification", "password");

我得到这样的错误:

Warning: imap_open(): Couldn't open stream {localhost/imap:143} in /var/www/site.com/www/mail.php on line 8
bool(false)
Notice: Unknown: Connection failed to localhost,143: Connection refused (errflg=1) in Unknown on line 0
Notice: Unknown: Connection failed to localhost,143: Connection refused (errflg=1) in Unknown on line 0
Notice: Unknown: Connection failed to localhost,143: Connection refused (errflg=1) in Unknown on line 0
Notice: Unknown: Connection failed to localhost,143: Connection refused (errflg=2) in Unknown on line 0

我不明白,显然这是我第一次尝试,但我在连接上明显做错了什么?

编辑:我启动了courier-imap,现在我得到了这个:

Notice: Unknown: [CLOSED] IMAP connection broken (server response) (errflg=1) in Unknown on line 0
Notice: Unknown: [ALERT] Fatal error: No such file or directory: No such file or directory in Unknown on line 0

你要求在这里进行基本的调试,所以我试着,也许这会影响

您是否尝试指定邮箱?顺便说一句,你实际上应该使用正确的语法,它是host:port/protocol,而imap是默认协议,你可以省略它:

imap_open("{localhost:143}INBOX", "notification", "password");
            ^^^^^^^^^^^^^ ^^^^^

请与imap_openDocs上的许多示例和注释进行比较。

同样,由于这是调试,请尝试:

var_dump(imap_errors(), imap_alerts());

调试愉快。

我在Ubuntu 11.04系统上遇到了完全相同的问题,我用以下命令在主目录中创建了"Maildir"文件夹(如上所述),解决了这个问题:

cd ~
maildirmake Maildir
maildirmake Maildir/.Drafts
maildirmake Maildir/.Sent
maildirmake Maildir/.Trash
maildirmake Maildir/.Templates
chmod -R 700 Maildir

首先,您应该检查日志文件"/var/log/syslog"中的错误(例如,通过执行命令sudo tail /var/log/syslog
在我的日志中,我注意到了以下错误:imapd: chdir Maildir: No such file or directory
因此,我检查了配置文件"/etc/courier/imapd",发现MAILDIRPATH选项设置为"Maildir":

#
# MAILDIRPATH - directory name of the maildir directory.
#
MAILDIRPATH=Maildir

然后,我如上所述创建了"Maildir"文件夹,"imap_open()"函数终于工作了。