可能不是一个非常有用的问题,但我无法想象,这个问题没有明确的答案。我刚刚通过一些已经回答的有关imap_open()
连接问题的问题得出结论,当连接到SSL服务器时,该函数很可能会返回错误。所以我只是想知道,PHP使用SSL的问题是什么?
使用此连接字符串将返回错误:
function connect($host, $port, $login, $pass){
$this->server = $host;
$this->username = $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';
}
}
虽然这个连接没有问题:
function connect($host, $port, $login, $pass){
$this->server = $host;
$this->username = $login;
$this->link = imap_open("{". $host .":". $port."/imap/ssl/novalidate-cert}INBOX", $login, $pass);
if($this->link) {
$this->status = 'Connected';
} else {
$this->error[] = imap_last_error();
$this->status = 'Not connected';
}
}
答案 0 :(得分:2)
如果服务器需要加密连接,则表示您正在连接到加密端口,如果您不使用/ssl
(根本没有连接),您的脚本将会失败。
服务器也可以接受明文连接,然后需要加密(参见STARTTLS),但我想它会连接然后发送IMAP错误。
可以通过您连接的端口和邮件服务器规范来检查。通常,端口465/993被分配使用加密的TLS / SSL连接,而25/143/587可以接受未加密的连接,然后请求升级。