You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PHP IMAP获取Gmail收件箱失败,提示Network is unreachable错误

PHP IMAP连接Gmail报"Network is unreachable"错误的解决方法

问题描述

使用PHP IMAP功能连接Gmail邮箱以获取邮件并在HTML页面展示时,出现Network is unreachable错误,无法建立连接。实现代码如下:

<h1>Gmail Email Inbox using PHP with IMAP</h1>
<?php
    if (! function_exists('imap_open')) {
        echo "IMAP is not configured.";
        exit();
    } else {
        ?>
<div id="listData" class="list-form-container">
    <?php
        
        /* Connecting Gmail server with IMAP */
        $connection = imap_open('{imap.gmail.com:993/imap/ssl}INBOX', 'My correct email address here', 'My correct password here') or die('Cannot connect to Gmail: ' . imap_last_error());
        
        /* Search Emails having the specified keyword in the email subject */
        $emailData = imap_search($connection, 'SUBJECT "Article "');
        
        if (! empty($emailData)) {
            ?>
    <table>
        <?php
            foreach ($emailData as $emailIdent) {
                
                $overview = imap_fetch_overview($connection, $emailIdent, 0);
                $message = imap_fetchbody($connection, $emailIdent, '1.1');
                $messageExcerpt = substr($message, 0, 150);
                $partialMessage = trim(quoted_printable_decode($messageExcerpt)); 
                $date = date("d F, Y", strtotime($overview[0]->date));
                ?>
        <tr>
            <td><span class="column">
                    <?php echo $overview[0]->from; ?>
            </span></td>
            <td class="content-div"><span class="column">
                    <?php echo $overview[0]->subject; ?> - <?php echo $partialMessage; ?>
            </span><span class="date">
                    <?php echo $date; ?>
            </span></td>
        </tr>
        <?php
            } // End foreach
            ?>
    </table>
    <?php
        } // end if
        
        imap_close($connection);
    }
    ?>
</div>

解决步骤

  • 排查服务器网络连通性
    在运行代码的服务器上执行以下命令,测试能否连接Gmail的IMAP服务:

    telnet imap.gmail.com 993
    # 或者使用nc命令
    nc -zv imap.gmail.com 993
    

    如果命令执行失败,说明服务器的防火墙/安全组限制了993端口的出站访问,需要联系运维开放该端口;或者服务器本身无外网访问权限,需先解决网络连通问题。

  • 更新Gmail登录验证方式
    Gmail已不再支持普通密码用于IMAP登录,必须使用以下两种方式之一:

    1. 启用两步验证并生成应用专用密码:登录Google账号安全设置页面,开启两步验证后,生成一个应用专用密码,替换代码中的普通密码。
    2. 开启"不太安全的应用访问"(不推荐,存在安全风险):仅在无法启用两步验证时临时使用,登录Google账号安全设置开启该选项。
  • 调整PHP IMAP的SSL配置
    部分服务器的PHP IMAP可能因SSL证书问题无法建立连接,可以先尝试跳过证书验证(仅用于测试,生产环境不建议):
    修改连接字符串为:

    $connection = imap_open('{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX', '你的邮箱地址', '应用专用密码') or die('Cannot connect to Gmail: ' . imap_last_error());
    

    生产环境建议确保服务器安装了正确的CA证书,让PHP能正常验证Gmail的SSL证书。

  • 验证代码参数正确性
    确认代码中的邮箱地址、应用专用密码无拼写错误,同时可以打印完整的imap_last_error()信息,获取更具体的错误提示,辅助排查问题。

内容的提问来源于stack exchange,提问作者Freeman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 21:53:36