You are here

public function SMTP::Connect in SMTP Authentication Support 7.2

Same name and namespace in other branches
  1. 5 smtp.module \SMTP::Connect()
  2. 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.transport.inc, line 117
SMTP mail transport class for the smtp module,based on code of the phpmailer library, customized and relicensed to GPLv2

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. original author: Chris Ryan

Code

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()) {

    // already connected, generate error
    $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) {
      drupal_set_message(t("SMTP -> ERROR: @error: @errstr (@errno)", array(
        "@error" => $this->error["error"],
        "@errstr" => $errstr,
        "@errno" => $errno,
      )));
    }
    return FALSE;
  }

  // SMTP server can take longer to respond, give longer timeout for first read
  // Windows 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
  $announce = $this
    ->get_lines();
  if ($this->do_debug >= 2) {
    drupal_set_message(t("SMTP -> FROM SERVER: @announce", array(
      "@announce" => $announce,
    )));
  }
  return TRUE;
}