带有etodb类的PHP Imap_open可以在一台服务器上运行,但不能在另一台服

时间:2013-01-05 14:29:17

标签: php imap pop3

我使用相当简单的php类emailtodb将电子邮件导入mysql数据库。当我用它来检查本地服务器上的电子邮件帐户时,一切都像希望的那样完美。问题是我把连接脚本放在另一台服务器上,现在它无法连接。总结希望我想说的是:

server1.com -accessing-> myemail@server1.com = works perfect
server2.com -accessing-> myemail@server1.com = Warning: imap_open() [function.imap-open]: Couldn't open stream 

这是我用来连接服务器的代码

$mysql_pconnect = mysql_pconnect($cfg["db_host"], $cfg["db_user"], $cfg["db_pass"]);
if(!$mysql_pconnect){echo "Connection Failed"; exit; }
$db = mysql_select_db($cfg["db_name"], $mysql_pconnect);
if(!$db){echo"DB Select Failed"; exit;}

$edb = new EMAIL_TO_DB();
$edb->connect('mail.MYSERVER.com', '/pop3:110/notls', $email, $pass);
$edb->do_action();

实际上这个功能实际连接(我相信)

function connect($host, $port, $login, $pass){

$this->IMAP_host = $host;
$this->IMAP_login = $login;

$this->link = imap_open("{". $host . $port."}INBOX", $login, $pass);
if($this->link) {
$this->status = 'Connected';
} else {
$this->error[] = imap_last_error();
$this->status = 'Not connected';
}
}

最后我要说两台服务器之间有一个主要区别,新服务器有一个SSL,第一个没有,所以新的邮件连接从HTTPS到HTTP,但我不知道是否有任何关系用它。

1 个答案:

答案 0 :(得分:0)

我今晚正在玩这个剧本。你尝试过这样的事吗? (假设您使用SSL从POP3切换到IMAP)

$ edb-> connect('mail.server.com:993','/ imap / ssl / novalidate-cert','myname@server.com','password');

我发现我的PHP环境没有PHP符合IMAP-SSL(phpinfo()中的--with-imap-ssl),所以这也给我带来了一些早期问题。