function SMTP::Connect in SMTP Authentication Support 5
Same name and namespace in other branches
- 7.2 smtp.transport.inc \SMTP::Connect()
- 7 smtp.transport.inc \SMTP::Connect()
Connect to the server specified on the port specified. If the port is not specified use the default SMTP_PORT. If tval is specified then a connection will try and be established with the server for that number of seconds. If tval is not specified the default is 30 seconds to try on the connection.
SMTP CODE SUCCESS: 220 SMTP CODE FAILURE: 421 @access public
Return value
bool
File
- ./
smtp.module, line 2055 - Enables drupal to send email directly to an SMTP server using authentication. Uses the PHPMailer class by Brent R. Matzelle.
Class
- SMTP
- SMTP is rfc 821 compliant and implements all the rfc 821 SMTP commands except TURN which will always return a not implemented error. SMTP also provides some utility methods for sending mail to an SMTP server. @package PHPMailer @author Chris Ryan
Code
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($this->protocol . $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;
}