public function Connect($host, $port = 0, $tval = 30)
{
/* set the error val to null so there is no confusion */
$this->error = null;
/* make sure we are __not__ connected */
if ($this->connected()) {
/* ok we are connected! what should we do?
* for now we will just give an error saying we
* are already connected
*/
$this->error = array("error" => "Already connected to a server");
return false;
}
if (empty($port)) {
$port = $this->SMTP_PORT;
}
/* connect to the smtp server */
$this->smtp_conn = fsockopen($host, $port, $errno, $errstr, $tval);
// give up after ? secs
/* verify we connected properly */
if (empty($this->smtp_conn)) {
$this->error = array("error" => "Failed to connect to server", "errno" => $errno, "errstr" => $errstr);
if ($this->do_debug >= 1) {
echo "SMTP -> ERROR: " . $this->error["error"] . ": {$errstr} ({$errno})" . $this->CRLF;
}
return false;
}
/* sometimes the SMTP server takes a little longer to respond
* so we will give it a longer timeout for the first read
* - Windows still does not have support for this timeout function
*/
if (substr(PHP_OS, 0, 3) != "WIN") {
socket_set_timeout($this->smtp_conn, $tval, 0);
}
/* get any announcement stuff */
$announce = $this->get_lines();
/* set the timeout of any socket functions at 1/10 of a second */
//if(function_exists("socket_set_timeout"))
// socket_set_timeout($this->smtp_conn, 0, 100000);
if ($this->do_debug >= 2) {
echo "SMTP -> FROM SERVER:" . $this->CRLF . $announce;
}
return true;
}