【发布时间】:2012-06-22 01:39:42
【问题描述】:
我正在尝试使用 PHP 的标准库从头开始编写一个非常简单的基于 Web 的电子邮件客户端。我会诚实的;我不完全确定我在做什么,所以这是我为了试错学习而拼凑起来的东西。但是,无论我尝试什么,我都会超时。有什么建议吗?我知道预期的输出看起来不太漂亮,但就像我说的,这只是为了试错。
<?php
$stream = imap_open('{imap.gmail.com:993/imap/ssl}INBOX', '<email_removed>', '<password_removed>') or
die('Cannot connect to server: ' . imap_last_error());
$date = date('d M Y', strtotime('-1 month'));
if ($emails = imap_search($stream, "SINCE \"$date\"")) {
rsort($emails);
foreach ($emails as $email_number) {
echo imap_fetchbody($stream, $email_number, 2);
}
}
imap_close($stream);
?>
我得到的输出如下。
警告:imap_open() [function.imap-open]:无法在第 3 行打开流 {imap.gmail.com:993/imap/ssl}INBOX 无法连接到服务器:无法连接到 gmail-imap.l.google.com,993:网络无法访问
通知:未知:无法连接到 gmail-imap.l.google.com,993:第 0 行未知中的连接超时 (errflg=1)
通知:未知:无法连接到 gmail-imap.l.google.com,993:第 0 行未知中的连接超时 (errflg=1)
通知:未知:无法连接到 gmail-imap.l.google.com,993:第 0 行的未知中的网络无法访问 (errflg=2)
【问题讨论】:
-
Network is unreachable通常意味着您无法获得任何出站网络。 -
你的机器可以路由到
gmail-imap.l.google.com吗?您的网络服务器是否被 mandatory access control 工具所限制,例如 SELinux、TOMOYO 或 SMACK? -
@sarnold,我不确定。我怎样才能找到它?
-
尝试类似:
ping gmail-imap.l.google.com或telnet gmail-imap.l.google.com imaps或openssl s_client -connect gmail-imap.l.google.com:imaps。 -
太棒了!现在您知道需要做什么了——弄清楚为什么您的服务器无法与这些主机建立出站连接。您可以与 any 主机建立出站连接吗?弄清楚哪些是允许的,哪些是拒绝的。您可能需要摆弄系统的防火墙或让主机的管理员摆弄他们的防火墙。如果这是 EC2 实例,则需要修改组策略。