为什么php的imap_open()不像SSL?

时间:2016-01-30 17:15:32

标签: php ssl imap

可能不是一个非常有用的问题,但我无法想象,这个问题没有明确的答案。我刚刚通过一些已经回答的有关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';
    }
}

1 个答案:

答案 0 :(得分:2)

如果服务器需要加密连接,则表示您正在连接到加密端口,如果您不使用/ssl(根本没有连接),您的脚本将会失败。

服务器也可以接受明文连接,然后需要加密(参见STARTTLS),但我想它会连接然后发送IMAP错误。

可以通过您连接的端口和邮件服务器规范来检查。通常,端口465/993被分配使用加密的TLS / SSL连接,而25/143/587可以接受未加密的连接,然后请求升级。