Reading mails on server with IMAP?

2019-05-22 15:52发布

问题:

I'm setting up an email 'proxy-like' where notification emails are sent to the user that he has subscribed to, but he can reply to the email notification@site.com which should contain his reply. On the server-side I want to be able to read his email and add his reply to the database - the email is stored in the notification user inbox which is great, now to be able to read it with PHP.

So, I've been looking around for solutions for this, many solutions were IMAP so I thought I'd give a try but I cannot seem to figure my connection my server to open the inbox. I've adjusted to different ports, but none of them are able to connect.

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

I get errors like this:

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

I don't understand, obviously this is my first time trying this but what is it that I'm clearly doing wrong with the connection?

EDIT: I started courier-imap now I get this:

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

回答1:

I had exactly the same problem on my Ubuntu 11.04 system, and I've solved by creating the "Maildir" folders in my home directory (as described here) with the following commands:

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

First of all, you should check for errors in the log file "/var/log/syslog" (for example by executing the command sudo tail /var/log/syslog).
In my log I had noticed the following error: imapd: chdir Maildir: No such file or directory.
So I've checked the configuration file "/etc/courier/imapd" and I saw that the MAILDIRPATH option was set to "Maildir":

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

Then I've created the "Maildir" folders as described above, and the "imap_open()" function finally worked.



回答2:

You are asking for basic debugging here, so I try, maybe this machtes

Have you tried to specify a mailbox? And btw you should actually use the right syntax, it is host:port/protocol whereas imap is the default protocol and you can leave it out:

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

Please compare with the many examples and notes on imap_openDocs.

Also as this is debugging, try:

var_dump(imap_errors(), imap_alerts());

Happy debugging.



标签: php email imap