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 : 无法打开到我的邮件服务器的流的主要内容,如果未能解决你的问题,请参考以下文章

无法捕捉到我的 mysql 错误

在 IMAP 服务器上将电子邮件设置为已查看

无法理解 axios 请求的安全性

致命错误:在 PHP 中调用未定义的函数 imap_open()

为啥我的提交按钮不能将信息发送到我想要的电子邮件? (PHP)

exchange邮件无法发送问题(被反垃圾屏蔽)