Problem with SMTP authentication in PHP using PHPMailer, with Pear Mail works

121,626

Solution 1

strange issue that i solved by comment this line

//$mail->IsSmtp();

whit the last phpmailer version (5.2)

Solution 2

Try adding this:

$mail->SMTPAuth   = true;
$mail->SMTPSecure = "tls";

By looking at your debug logs, you can notice that the failing PhpMailer log shows this:

(..snip..)
SMTP -> ERROR: AUTH not accepted from server: 250 orion.bommtempo.net.br Hello admin-teste.bommtempo.com.br [200.155.129.6]
(..snip..)
503 AUTH command used when not advertised
(..snip..)

While your successful PEAR log shows this:

DEBUG: Send: STARTTLS
DEBUG: Recv: 220 TLS go ahead

My guess is that explicitly asking PHPMailer to use TLS will put it on the right track.
Also, make sure you're using the latest versin of PHPMailer.

Solution 3

This happened to me as well. For me, Postfix was located at the same server as the PHP script, and the error was happening when I would be using SMTP authentication and smtp.domain.com instead of localhost.

So when I commented out these lines:

$mail->SMTPAuth = true;
$mail->SMTPSecure = "tls";

and set the host to

$mail->Host = "localhost";

instead

$mail->Host = 'smtp.mydomainiuse.com'

and it worked :)

Solution 4

Check if you have set restrict outgoing SMTP to only some system users (root, MTA, mailman...). That restriction may prevent the spammers, but will redirect outgoing SMTP connections to the local mail server.

Share:
121,626
Evandro
Author by

Evandro

Updated on July 09, 2022

Comments

  • Evandro
    Evandro almost 2 years

    I´m having trouble sending a e-mail with the PHPMailer class, but it works with PEAR Mail::factory.

    I guess the problem is with the SMTP authentication, but I couldn´t find the problem.

    The code with problem is:

    <?php
    require("class.phpmailer.php");
    
    $mail = new PHPMailer();
    
    $mail->IsSMTP();       // set mailer to use SMTP
    $mail->Host = 'mail.xxx.com.br';  // my host here
    $mail->SMTPAuth = true;     // turn on SMTP authentication
    $mail->Username = '[email protected]';  // a valid email here
    $mail->Password = '***';  // the password from email
    $mail->From = '[email protected]';
    $mail->SMTPDebug = true;
    $mail->AddReplyTo('[email protected]', 'Test');
    
    $mail->FromName = 'Test SMTP';
    $mail->AddAddress('[email protected]', '[email protected]');
    
    $mail->Subject = 'Test SMTP';
    $mail->IsHTML(true);
    $mail->Body = '<b>Teste</b><br><h1>teste 2</h1>';   
    //$mail->Send();
    
    if(!$mail->Send())
    {
       echo "Message could not be sent. <p>";
       echo "Mailer Error: " . $mail->ErrorInfo;
       exit;
    }
    
    ?>
    

    The code with PEAR that works is:

    <?php
    include('Mail.php');
    include('Mail/mime.php');
    
    $text = 'Versao em texto';
    $html = '<html><body>Versao de email em <b>HTML</b></body></html>';
    $crlf = "\n";
    $hdrs = array(
                  'From'    => '[email protected]',
                  'Subject' => 'Test  - mail.php'
                  );
    
    $mime = new Mail_mime($crlf);
    
    $mime->setTXTBody($text);
    $mime->setHTMLBody($html);
    
    $body = $mime->get();
    $hdrs = $mime->headers($hdrs);
    
    $mail = Mail::factory('smtp',
      array ('host' => 'mail.xxx.com.br',
        'debug'=> true,
        'auth' => true,
        'username' => '[email protected]',
        'password' => '***'));
    
    $mail->send('[email protected]', $hdrs, $body);
    ?>
    

    When I run the code with problem with debug activated (SMTPDebug = True) I got:

    SMTP -> FROM SERVER:
    
    SMTP -> get_lines(): $data was ""
    
    SMTP -> get_lines(): $str is "220-orion.bommtempo.net.br ESMTP Exim 4.69 #1 Wed, 05 Aug 2009 10:00:48 -0300 
    
    "
    
    SMTP -> get_lines(): $data is "220-orion.bommtempo.net.br ESMTP Exim 4.69 #1 Wed, 05 Aug 2009 10:00:48 -0300 
    
    "
    
    SMTP -> get_lines(): $data was "220-orion.bommtempo.net.br ESMTP Exim 4.69 #1 Wed, 05 Aug 2009 10:00:48 -0300 
    
    "
    SMTP -> get_lines(): $str is "220-We do not authorize the use of this system to transport unsolicited, 
    "
    
    SMTP -> get_lines(): $data is "220-orion.bommtempo.net.br ESMTP Exim 4.69 #1 Wed, 05 Aug 2009 10:00:48 -0300 
    
    220-We do not authorize the use of this system to transport unsolicited, 
    
    "
    
    SMTP -> get_lines(): $data was "220-orion.bommtempo.net.br ESMTP Exim 4.69 #1 Wed, 05 Aug 2009 10:00:48 -0300 
    
    220-We do not authorize the use of this system to transport unsolicited, 
    
    "
    
    SMTP -> get_lines(): $str is "220 and/or bulk e-mail.
    
    "
    
    SMTP -> get_lines(): $data is "220-orion.bommtempo.net.br ESMTP Exim 4.69 #1 Wed, 05 Aug 2009 10:00:48 -0300 
    
    220-We do not authorize the use of this system to transport unsolicited, 
    
    220 and/or bulk e-mail.
    
    "
    
    SMTP -> FROM SERVER: 
    
    220-orion.bommtempo.net.br ESMTP Exim 4.69 #1 Wed, 05 Aug 2009 10:00:48 -0300 
    
    220-We do not authorize the use of this system to transport unsolicited, 
    
    220 and/or bulk e-mail.
    
    SMTP -> ERROR: EHLO not accepted from server: 220-orion.bommtempo.net.br ESMTP Exim 4.69 #1 Wed, 05 Aug 2009 10:00:48 -0300 
    
    220-We do not authorize the use of this system to transport unsolicited, 
    
    220 and/or bulk e-mail.
    
    
    SMTP -> get_lines(): $data was ""
    
    SMTP -> get_lines(): $str is "250-orion.bommtempo.net.br Hello admin-teste.bommtempo.com.br [200.155.129.6]
    
    "
    
    SMTP -> get_lines(): $data is "250-orion.bommtempo.net.br Hello admin-teste.bommtempo.com.br [200.155.129.6]
    
    "
    
    SMTP -> get_lines(): $data was "250-orion.bommtempo.net.br Hello admin-teste.bommtempo.com.br [200.155.129.6]
    
    "
    
    SMTP -> get_lines(): $str is "250-SIZE 20971520
    
    "
    
    SMTP -> get_lines(): $data is "250-orion.bommtempo.net.br Hello admin-teste.bommtempo.com.br [200.155.129.6]
    250-SIZE 20971520
    
    "
    
    SMTP -> get_lines(): $data was "250-orion.bommtempo.net.br Hello admin-teste.bommtempo.com.br [200.155.129.6]
    250-SIZE 20971520
    
    "
    
    SMTP -> get_lines(): $str is "250-PIPELINING
    
    "
    
    SMTP -> get_lines(): $data is "250-orion.bommtempo.net.br Hello admin-teste.bommtempo.com.br [200.155.129.6]
    
    250-SIZE 20971520
    
    250-PIPELINING
    
    "
    
    SMTP -> get_lines(): $data was "250-orion.bommtempo.net.br Hello admin-teste.bommtempo.com.br [200.155.129.6]
    
    250-SIZE 20971520
    
    250-PIPELINING
    
    "
    
    SMTP -> get_lines(): $str is "250-AUTH PLAIN LOGIN
    
    "
    
    SMTP -> get_lines(): $data is "250-orion.bommtempo.net.br Hello admin-teste.bommtempo.com.br [200.155.129.6]
    
    250-SIZE 20971520
    
    250-PIPELINING
    
    250-AUTH PLAIN LOGIN
    
    "
    
    SMTP -> get_lines(): $data was "250-orion.bommtempo.net.br Hello admin-teste.bommtempo.com.br [200.155.129.6]
    
    250-SIZE 20971520
    
    250-PIPELINING
    
    250-AUTH PLAIN LOGIN
    
    "
    
    SMTP -> get_lines(): $str is "250-STARTTLS
    
    "
    
    SMTP -> get_lines(): $data is "250-orion.bommtempo.net.br Hello admin-teste.bommtempo.com.br [200.155.129.6]
    
    250-SIZE 20971520
    
    250-PIPELINING
    
    250-AUTH PLAIN LOGIN
    
    250-STARTTLS
    
    "
    
    SMTP -> get_lines(): $data was "250-orion.bommtempo.net.br Hello admin-teste.bommtempo.com.br [200.155.129.6]
    
    250-SIZE 20971520
    
    250-PIPELINING
    
    250-AUTH PLAIN LOGIN
    
    250-STARTTLS
    
    "
    
    SMTP -> get_lines(): $str is "250 HELP
    
    "
    
    SMTP -> get_lines(): $data is "250-orion.bommtempo.net.br Hello admin-teste.bommtempo.com.br [200.155.129.6]
    
    250-SIZE 20971520
    
    250-PIPELINING
    
    250-AUTH PLAIN LOGIN
    
    250-STARTTLS
    
    250 HELP
    
    "
    
    SMTP -> FROM SERVER: 
    
    250-orion.bommtempo.net.br Hello admin-teste.bommtempo.com.br [200.155.129.6]
    
    250-SIZE 20971520
    
    250-PIPELINING
    
    250-AUTH PLAIN LOGIN
    
    250-STARTTLS
    
    250 HELP
    
    SMTP -> get_lines(): $data was ""
    
    SMTP -> get_lines(): $str is "250 orion.bommtempo.net.br Hello admin-teste.bommtempo.com.br [200.155.129.6]
    
    "
    
    SMTP -> get_lines(): $data is "250 orion.bommtempo.net.br Hello admin-teste.bommtempo.com.br [200.155.129.6]
    
    "
    
    SMTP -> ERROR: AUTH not accepted from server: 250 orion.bommtempo.net.br Hello admin-teste.bommtempo.com.br [200.155.129.6]
    
    
    SMTP -> get_lines(): $data was ""
    
    SMTP -> get_lines(): $str is "503 AUTH command used when not advertised
    
    "
    
    SMTP -> get_lines(): $data is "503 AUTH command used when not advertised
    
    "
    
    SMTP -> FROM SERVER:
    
    503 AUTH command used when not advertised
    
    SMTP -> ERROR: RSET failed: 503 AUTH command used when not advertised
    
    
    Message could not be sent. <p>Mailer Error: SMTP Error: Could not connect to SMTP host.
    

    And the debug result of the PEAR Mail code is:

    DEBUG: Recv: 220-orion.bommtempo.net.br ESMTP Exim 4.69 #1 Tue, 04 Aug 2009 19:37:10 -0300 
    
    DEBUG: Recv: 220-We do not authorize the use of this system to transport unsolicited, 
    
    DEBUG: Recv: 220 and/or bulk e-mail.
    
    DEBUG: Send: EHLO localhost
    
    
    DEBUG: Recv: 250-orion.bommtempo.net.br Hello localhost [200.155.129.6]
    
    DEBUG: Recv: 250-SIZE 20971520
    
    DEBUG: Recv: 250-PIPELINING
    
    DEBUG: Recv: 250-AUTH PLAIN LOGIN
    
    DEBUG: Recv: 250-STARTTLS
    
    DEBUG: Recv: 250 HELP
    
    DEBUG: Send: STARTTLS
    
    
    DEBUG: Recv: 220 TLS go ahead
    
    DEBUG: Send: EHLO localhost
    
    
    DEBUG: Recv: 250-orion.bommtempo.net.br Hello localhost [200.155.129.6]
    
    DEBUG: Recv: 250-SIZE 20971520
    
    DEBUG: Recv: 250-PIPELINING
    
    DEBUG: Recv: 250-AUTH PLAIN LOGIN
    
    DEBUG: Recv: 250 HELP
    
    DEBUG: Send: AUTH LOGIN
    
    
    DEBUG: Recv: 334 VXNlcm5hbWU6
    
    DEBUG: Send: c2lzdGVtYWFkbWluQGJvbW10ZW1wby5jb20uYnI=
    
    
    DEBUG: Recv: 334 UGFzc3dvcmQ6
    
    DEBUG: Send: RVkyYVM4YnpMNU5k
    
    
    DEBUG: Recv: 235 Authentication succeeded
    
    DEBUG: Send: MAIL FROM:
    
    
    DEBUG: Recv: 250 OK
    
    DEBUG: Send: RCPT TO:
    
    
    DEBUG: Recv: 250 Accepted
    
    DEBUG: Send: DATA
    
    
    DEBUG: Recv: 354 Enter message, ending with "." on a line by itself
    
    DEBUG: Send: MIME-Version: 1.0
    
    From: [email protected]
    
    Subject: Teste de mail - mail.php
    
    Content-Type: multipart/alternative;
        boundary="=_b3c5407ccf494306d78fbb35800efe65"
    
    
    --=_b3c5407ccf494306d78fbb35800efe65
    
    Content-Transfer-Encoding: 7bit
    
    Content-Type: text/plain; charset="ISO-8859-1"
    
    
    Versao em texto
    
    --=_b3c5407ccf494306d78fbb35800efe65
    
    Content-Transfer-Encoding: quoted-printable
    
    Content-Type: text/html; charset="ISO-8859-1"
    
    
    Versao de email em HTML--=_b3c5407ccf494306d78fbb35800efe65--
    
    .
    
    DEBUG: Recv: 250 OK id=1MYSd4-0005Ky-Jw
    
    DEBUG: Send: QUIT