function SMTP::Authenticate in SMTP Authentication Support 5
Same name and namespace in other branches
- 7.2 smtp.transport.inc \SMTP::Authenticate()
- 7 smtp.transport.inc \SMTP::Authenticate()
Performs SMTP authentication. Must be run after running the Hello() method. Returns true if successfully authenticated. @access public
Return value
bool
File
- ./
smtp.module, line 2117 - 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 Authenticate($username, $password) {
// Start authentication
fputs($this->smtp_conn, "AUTH LOGIN" . $this->CRLF);
$rply = $this
->get_lines();
$code = substr($rply, 0, 3);
if ($code != 334) {
$this->error = array(
"error" => "AUTH not accepted from server",
"smtp_code" => $code,
"smtp_msg" => substr($rply, 4),
);
if ($this->do_debug >= 1) {
echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF;
}
return false;
}
// Send encoded username
fputs($this->smtp_conn, base64_encode($username) . $this->CRLF);
$rply = $this
->get_lines();
$code = substr($rply, 0, 3);
if ($code != 334) {
$this->error = array(
"error" => "Username not accepted from server",
"smtp_code" => $code,
"smtp_msg" => substr($rply, 4),
);
if ($this->do_debug >= 1) {
echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF;
}
return false;
}
// Send encoded password
fputs($this->smtp_conn, base64_encode($password) . $this->CRLF);
$rply = $this
->get_lines();
$code = substr($rply, 0, 3);
if ($code != 235) {
$this->error = array(
"error" => "Password not accepted from server",
"smtp_code" => $code,
"smtp_msg" => substr($rply, 4),
);
if ($this->do_debug >= 1) {
echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF;
}
return false;
}
return true;
}