imap_open : 无法打开到我的邮件服务器的流
Posted
技术标签:
【中文标题】imap_open : 无法打开到我的邮件服务器的流【英文标题】:imap_open : couldn't open stream to my mail server 【发布时间】:2014-05-12 07:33:10 【问题描述】:注意:未知:与 mail.domain.com 的连接失败,143:连接 第 0 行 Unknown 中超时 (errflg=2)
imap_open("mail.domain.com:143/novalidate-certINBOX", 'login', 'password')
端口 143 已打开,我不在防火墙后面,我的服务器使用自签名证书。
我真的不明白为什么我无法连接到我的邮件服务器
我到处搜索,但没有找到答案..
【问题讨论】:
你遇到了什么错误?Cannot connect: Array ( [0] => Connection failed to mail.domain.com,143: Connection timed out )
当服务器没有运行 IMAP 服务器时会发生此错误。如果您尝试连接 gmail 或任何其他邮件服务器,则必须从设置中启用 imap。如果您有 VPS,请检查您的 dovecot 日志。
如果您使用 SSL,您可能需要端口 993。如果您使用纯文本,则为 143。如果您使用 STARTTLS,则为 143。您可以从您的网站 telnet托管到 mail.domain.com 143 并获得 * OK 提示?
【参考方案1】:
感谢您的回答。 我的错误不是来自连接,而是当我收到太多电子邮件时导致服务器崩溃的循环:
imap_open("mail.domain.com:143/novalidate-certINBOX", '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/sslINBOX in, ,,,,,,,,,,,,无法连接到Gmail:无法对IMAP服务器进行身份验证:[ALERT]请通过您的网络浏览器登录:support.google.com/mail/acco..........what我做错了请告诉我【参考方案2】:就我而言,这成功了:
imap_open("mail.domain.com:110/pop3/notlsINBOX", 'login', 'password')
【讨论】:
【参考方案3】:我的猜测是你落后于 ssl(默认端口 993)
试试
imap_open("mail.domain.com:993/imap/ssl/novalidate-certINBOX", 'login', 'password') or die('Cannot connect: ' . print_r(imap_errors(), true))
别忘了打开那个端口
【讨论】:
你上面的 cmets 反驳说:你说你有一个自签名证书,它只对 SSL 有用。 是的,对不起。我使用 SSL 协议,但它使用自签名证书。 默认的 IMAP 安全端口是 993,而不是 585。【参考方案4】:我写了一个库。 不知道它是否适用于您的主机。 但你肯定可以试试。 http://vivoauthimap.vivsoftware.in/
【讨论】:
【参考方案5】:在我的例子中,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-certINBOX
Can't open mailbox imap.gmail.com:993/imap/ssl/novalidate-certINBOX: invalid remote specification
【讨论】:
【参考方案6】:我自己也有同样的问题。如您所见。
那么,我是如何解决这个问题的:
转到您的Google Account,您必须更改安全设置。
转到安全标签。
向下滚动,您会发现登录 Google
转OFF
这两个设置:
-
使用手机登录
两步验证
然后关闭不太安全的应用访问ON
。
就是这样,它对我有用,希望对你有用。
【讨论】:
【参考方案7】:对于雅虎电子邮件,这对我有用
imap_open( "imap.mail.yahoo.com:993/imap/ssl/novalidate-certINBOX", "Email", "PASSWORD" );
【讨论】:
以上是关于imap_open : 无法打开到我的邮件服务器的流的主要内容,如果未能解决你的问题,请参考以下文章
致命错误:在 PHP 中调用未定义的函数 imap_open()