imap_open: 无法连接到我的邮件服务器。

20

注意:Unknown: 在第0行中,连接到 mail.domain.com,143 失败:连接超时 (errflg=2)

imap_open("{mail.domain.com:143/novalidate-cert}INBOX", 'login', 'password')

端口143是开放的,我没有被防火墙限制,我的服务器使用自签名证书。

我真的不明白为什么我不能连接到我的邮件服务器。

我到处搜寻但没有找到答案...


你遇到了什么错误? - Vivek Muthal
Cannot connect: Array ( [0] => Connection failed to mail.domain.com,143: Connection timed out ) - PASTAGA
当服务器没有运行IMAP服务器时,会出现此错误。如果您正在尝试连接Gmail或任何其他邮件服务器,则必须从设置中启用IMAP。如果您有VPS,则请检查您的dovecot日志。 - Vivek Muthal
如果你正在使用SSL,你可能需要端口993。如果你正在使用明文,端口将是143。如果你正在使用STARTTLS,端口也将是143。你能够从你的网络主机通过telnet连接到mail.domain.com 143并获得* OK提示吗? - Max
6个回答

12
感谢您的回答。我的错误并不是来自于连接,而是一个导致服务器崩溃的循环,当我有太多邮件时出现了这个问题:
imap_open("{mail.domain.com:143/novalidate-cert}INBOX", 'login', 'password')

$mails = imap_search($stream, 'UNSEEN');

rsort($mails);
foreach ($mails as $mailId) {
  imap_fetch_overview($stream, $mailId, 0);
} //that was the mistake when email number is too big!

当我尝试下载过大的电子邮件时,出现了相同的问题... imap_open():无法打开流{imap.gmail.com:123/imap/ssl}INBOX in ... ... ... ... 无法连接到Gmail:无法通过IMAP服务器进行身份验证:[ALERT]请通过您的Web浏览器登录:https://support.google.com/mail/acco..........请告诉我我犯了什么错误。 - Sunil Bhawsar

2
在我的情况下,这个方法起了作用:

imap_open("{mail.domain.com:110/pop3/notls}INBOX", 'login', 'password')

1
我的猜测是您正在使用SSL(默认端口993)进行操作。
请尝试:
imap_open("{mail.domain.com:993/imap/ssl/novalidate-cert}INBOX", 'login', 'password') or die('Cannot connect: ' . print_r(imap_errors(), true))

不要忘记打开那个端口。

1
你上面的评论与此相矛盾:你说你有自签名证书,这只对SSL有用。 - Max
是的,我很抱歉。我使用SSL协议,但它使用自签名证书。 - PASTAGA
6
IMAP的默认安全端口是993,而不是585。 - Max

0

我自己也遇到了同样的问题。就像你所看到的。

enter image description here

所以,我是如何解决这个问题的:

进入您的Google帐户,您需要更改安全设置。

进入安全选项卡。

向下滚动,您会找到登录Google

关闭以下两个设置:使用手机登录2步验证

并将允许不安全的应用程序访问设置为开启

就这样,对我有用,希望对您也有用。


0
在我的情况下,imap扩展是没有使用--with-imap-ssl选项编译的。你需要将它传递给configure或者如果你正在使用Docker:
docker-php-ext-configure imap --with-imap-ssl
docker-php-ext-install imap

您可以使用以下命令验证是否支持SSL:
php -i | grep imap -A 5

如果没有“SSL Support => enabled”字符串,则需要重新编译imap扩展程序。
缺乏SSL支持会导致错误消息不够清晰:
Warning: imap_open(): Couldn't open stream {imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX
Can't open mailbox {imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX: invalid remote specification

-1

对于雅虎电子邮件,这是对我有效的方法

imap_open( "{imap.mail.yahoo.com:993/imap/ssl/novalidate-cert}INBOX", "Email", "PASSWORD" );

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接