首页 > 解决方案 > 使用 Centos7 服务器连接到我的电子邮件时出现问题

问题描述

我使用 php 语言开发了一个简单的代码,用于连接到我的电子邮件并使用本地 Window 10 服务器计算收到的电子邮件数量。

<?php
// server IMAP per la connessione
$server = "{imap.gmail.com:993/ssl/novalidate-cert}";

// account Gmail
$login = 'login@gmail.com';
// password per l'accesso a Gmail
$password = 'password';

// connessione IMAP ad un account Gmail
$connessione = imap_open($server, $login, $password);

$conteggio = imap_num_msg($connessione);

echo $conteggio."<br>";

通过在 Gmail 上启用 IMAP 协议并启用对安全性较低的应用程序的访问,该代码不会出现任何类型的错误。

当我尝试将此代码执行到 Centos 7 服务器机器中时,就会出现问题。我使用以下命令行安装了与我的 PHP 7.3 版本兼容的 IMAP 协议:yum --enablerepo=centos-sclo-sclo-testing install sclo-php73-php-imapservice imapd restart。成功下载包后,我重新启动服务器并检查

<?php

phpinfo(); 

?> 

并注意 IMAP 已启用。

imap
IMAP c-Client Version   2007f
SSL Support enabled
Kerberos Support    enabled

在此检查之后,如果我尝试运行我的初始代码,输出时会出现此错误消息:警告:imap_open(): 无法打开流 {imap.gmail.com:993/ssl/novalidate-cert} 即使我已启用 imap 并通过 actvaing。

PS。密码和登录名正确。

标签: phpimapcentos7gmail-imap

解决方案


该问题似乎与 PHP 无关,而是与连接有关,尤其是当脚本在不同的机器上运行时。

您需要检查两件事。

  • 您可以在端口 993 上进行出站连接吗(是否为 OUT 连接打开)。您可以尝试 telnet 进行检查,如果它不起作用,请验证您的 Linux 防火墙设置。
  • 您是否启用了 SELinux,如果启用了,您是否检查过您的审核日志中是否存在 AVC 拒绝?如果您遇到问题,您可能需要启用 httpd_can_network_connect 甚至执行 audit2allow,因为端口可能是非标准的。请小心您正在做的事情,因为您可能会破坏服务器上的安全性。

推荐阅读