- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我的 IMAP 邮件连接有问题吗?因为这至少需要 40 秒:
<?php
$mbox = imap_open('{myhost.example.com:993/imap/ssl}INBOX', "mymail@example.com", "password");
imap_close($mbox);
?>
可以,但是太慢了。如您所见 - 一个基本的打开和关闭。好吧,40 秒可能是可以接受的,但这中间没有任何操作!我尝试连接到 gmail IMAP 和我的个人主机 IMAP 服务器,结果相似。
现在我尝试了这个:
<?php
$mbox = imap_open('{myhost.example.com:993/imap/ssl}INBOX', "mymail@example.com", "password");
$unreadMails = imap_search($mbox, 'UNSEEN');
imap_close($mbox);
?>
通过连接到一个只有 3 封电子邮件(1 封未读)的新创建的邮箱,当我从我的 PC 上执行它时,这花了大约 80 秒。然后我将这个 PHP 脚本上传到我的服务器并尝试在那里执行它,但它更慢 - 它甚至没有设法执行,它超时了。
我做错了什么吗?
最佳答案
通过 openssl 连接到您的邮件服务器,检查启用了哪些身份验证方法:
openssl s_client -connect myhost.example.com:993
查找“AUTH=...”条目,示例:
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN AUTH=LOGIN AUTH=CRAM-MD5] Dovecot ready.
找出您实际使用的身份验证方法,并在您的 imap_connect 中使用 DISABLE_AUTHENTICATOR 禁用另一种方法。在我的例子中,CRAM-MD5 花了很多时间,在另一个例子中
$mbox = imap_open('{myhost.example.com:993/imap/ssl}INBOX', "mymail@example.com", "password", NULL, 0, array('DISABLE_AUTHENTICATOR' => 'CRAM-MD5') );
或者:例如,在 dovecot 中禁用不需要的身份验证方法。如果这样做,请确保它不再被任何人使用,否则他们在访问邮箱时会遇到问题。
此解决方案基于与 GSSAPI 身份验证相关的帖子: http://php.net/manual/en/function.imap-open.php#104701
另一种解决方案,如多个 Stackoverflow 答案中所指出的,是在 imap_open 语句中使用 IP 地址和端口号,而不是域名。在某些情况下,不这样做显然会增加解析 DNS 条目和找到正确端口的延迟。
关于PHP imap_open() 太慢?还有其他选择吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23143967/
我正在为我工作的公司开发一个管理面板,并且想知道一些事情。我想增加员工的经验。我希望他们能够通过输入登录凭据连接到他们的电子邮件,然后在管理面板中阅读电子邮件。我需要帮助的是: 如果我建立 ima
您好,我正在尝试通过 PHP 页面上的 IMAP(启用 IMAP 并访问不太安全的应用程序)从 Gmail 帐户检索电子邮件,但是当我尝试使用 imap_open 连接到我的帐户时,一切都崩溃了。这是
我在使用 imap_open 时遇到一些问题。这是我收到的错误: Message: imap_open(): Couldn't open stream {imap-mail.outlook.com:9
我在 PHP 中使用 imap_open 但消息正文显示如下: v\\:* {behavior:url(#default#VML);} o\\:* {behavior:url(#default
我有以下代码: print "foo"; imap_open("{localhost:143/imap/notls}", "myname", "mypass"); print "bar"; 脚本死了。
我正在使用以下函数来检索电子邮件正文,同时使用 PHP 的 imap_open功能。 它只是由 $email_body = getBody($email_number, $inbox); 调用 它工作
我正在尝试为我的 FatCow 电子邮件帐户使用 imap_open()。这是我的代码: $mbox = imap_open("{imap.fatcow.com:143}", "account@dom
我正在尝试使用 imap 访问我的 gmail 收件箱。我已经应用了这里和谷歌中几乎所有可能的解决方案。但我面临着同样的问题。 下面是我的代码: $hostname = "{imap.gmail.c
我正在尝试使用 imap_open() 连接并获取我的主机电子邮件地址的消息,但它抛出错误。 $server = '{mail.booksnearby.in:143/imap/ssl/novalida
我的 IMAP 邮件连接有问题吗?因为这至少需要 40 秒: 可以,但是太慢了。如您所见 - 一个基本的打开和关闭。好吧,40 秒可能是可以接受的,但这中间没有任何操作!我尝试连接到 gmail I
我已将 PHP 脚本移至另一台服务器,但现在无法登录 IMAP (TLS) 邮箱: TLS/SSL failure for mail.servername.de: SSL negotiation fa
我正在尝试通过 imap_open 访问 gmail 帐户邮件。 这是我的代码: $mbox = imap_open ("{imap.gmail.com:993/imap/ssl}", "gama.*
我正在尝试通过 imap_open 连接到 POP3 服务器 imap_open('{mail.domain.com:995/pop3/tls}INBOX', 'user@domain.com
我正在使用 PHP 5.3.5 我正在使用 $this->marubox=@imap_open($this->server,$this->username,$this->password); @ 符号
当我们尝试连接到 imap.gmail.com 时,我们已经开始遇到 imap_open 函数的问题,它返回: Can not authenticate to IMAP server: [AUTHEN
Notice: Unknown: Connection failed to mail.domain.com,143: Connection timed out (errflg=2) in Unknow
要获取 gmail 邮件,我使用以下代码。它在本地工作正常,但我在服务器中遇到错误,例如: 警告:imap_open():无法在线打开 C:\xampp\htdocs\riticoglive\emai
我正在尝试使用 PHP Imap 连接到 Office 365,但它无法连接到 Office 365。对于 gmail 和其他电子邮件主机,一切正常,但在 Office 365 上,我得到无法验证(我
可能不是一个很有帮助的问题,但我无法想象这个问题没有明确的答案。我刚刚通过一些关于 imap_open() 连接问题的已经回答的问题发现,当连接到 SSL 服务器时,该函数很可能会返回错误。所以我只是
当我尝试使用 imap_open 时,出现以下错误: Warning: imap_open() [function.imap-open]: Couldn't open stream {mail.dom
我是一名优秀的程序员,十分优秀!