尝试使用 imap_open 从 php 脚本连接到电子邮件服务器

问题描述

我不是程序员,所以请多多包涵。对不起,如果这是愚蠢的。

我可以在我的网站上创建和使用 PHP scripts,没问题。在过去的几天里,我一直在想办法以编程方式检查我的电子邮件。最常见的解决方案似乎涉及使用 imap_open 进行连接。这是仅一行代码的示例:

$mail = imap_open("{mymailserver:110}INBox","myname@mydomain.com","mypassword");

显然我的邮件服务器、用户名和密码在引号之间。就在第一行,页面挂起并最终给出 504 Gateway Time-out 错误

Thunderbird 可以使用相同的邮件服务器、端口、名称和密码连接到我的电子邮件。如果我从 Gmail 帐户插入信息,它仍然挂起并超时。当我运行 PHPinfo 时,它会说一些关于启用 imap 的信息(抱歉,如果这不相关,我不确定)。

托管我的网站的网络解决方案告诉我,我不应该使用脚本连接到电子邮件,但如果我付费,他们会调查它。任何帮助将不胜感激,因为我已经尝试了 20 小时。谢谢。

解决方法

端口 110 用于 POP3。我建议您尝试通过端口 143 (IMAP) 进行连接

请尝试使用以下代码进行测试(将 imap.example.com 替换为您的邮件服务器说 mail.test.com):

注意:对于用户名,在您的情况下可能是您的电子邮件地址(xxxx@xxxx.com)

<?php

ini_set('max_execution_time',300); //300 seconds = 5 minutes 


$mbox = imap_open("{imap.example.com:143}","username","password");

echo "<h1>Mailboxes</h1>\n";
$folders = imap_listmailbox($mbox,"{imap.example.com:143}","*");

if ($folders == false) {
    echo "Call failed<br />\n";
} else {
    foreach ($folders as $val) {
        echo $val . "<br />\n";
    }
}

echo "<h1>Headers in INBOX</h1>\n";
$headers = imap_headers($mbox);

if ($headers == false) {
    echo "Call failed<br />\n";
} else {
    foreach ($headers as $val) {
        echo $val . "<br />\n";
    }
}

imap_close($mbox);
?>