php - 使用 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。密码和登录名正确。
解决方案
该问题似乎与 PHP 无关,而是与连接有关,尤其是当脚本在不同的机器上运行时。
您需要检查两件事。
- 您可以在端口 993 上进行出站连接吗(是否为 OUT 连接打开)。您可以尝试 telnet 进行检查,如果它不起作用,请验证您的 Linux 防火墙设置。
- 您是否启用了 SELinux,如果启用了,您是否检查过您的审核日志中是否存在 AVC 拒绝?如果您遇到问题,您可能需要启用 httpd_can_network_connect 甚至执行 audit2allow,因为端口可能是非标准的。请小心您正在做的事情,因为您可能会破坏服务器上的安全性。
推荐阅读
- java - 线程“主”java.lang.AbstractMethodError SpringBoot 中的异常
- python - AWS SageMaker 训练脚本:如何传递自定义用户参数
- c - 双递归函数后使用顺序索引扫描数组
- gem5 - 如何在 se 模式下使用 gem5 中的 m5ops,例如 m5_exit 和 m5_dump_stats
- workflow - YOUTrack 工作流程因一个项目而失败
- java - 无法通过 Spring Boot 调用 https REST 端点
- json - 无法在 PySpark 中查询 JSON 制作的数据框列
- .htaccess - 需要正确的 htaccess 重定向语法
- python - 我可以使用 Numba 让这段 python 代码运行得更快吗?
- html - 而不是图标,它显示空白方块