PHPMailer SMTP connect failed

20,286

Solution 1

Uncoment php_openssl.dll in php.ini

Solution 2

Is the timezone set correctly?

include timezone definitions before loading phpmailer

date_default_timezone_set('Etc/UTC');

require '../PHPMailerAutoload.php';

$mail = new PHPMailer();

Also, if you're trying it from a gmail domain, it ught have been blocked. check at: https://security.google.com/settings/security/activity?hl=pt_BR

Share:
20,286
mgulan
Author by

mgulan

Updated on July 22, 2022

Comments

  • mgulan
    mgulan almost 2 years

    I'm trying to send email over Mandrill with PHPMailer but withouth sucess (testing on localhost).
    Can someone tell me where is the problem?

    This is the verbose information from PHPMailer:

    2014-04-27 17:51:06 SERVER -> CLIENT: 220 smtp.mandrillapp.com ESMTP
    2014-04-27 17:51:06 CLIENT -> SERVER: EHLO 127.0.0.1
    2014-04-27 17:51:06 SERVER -> CLIENT: 250-ip-10-107-129-238
                                          250-PIPELINING
                                          250-SIZE 26214400
                                          250-STARTTLS
                                          250-AUTH PLAIN LOGIN
                                          250-ENHANCEDSTATUSCODES
                                          250 8BITMIME
    2014-04-27 17:51:06 CLIENT -> SERVER: STARTTLS
    2014-04-27 17:51:06 SERVER -> CLIENT: 220 2.0.0 Ready to start TLS
    2014-04-27 17:51:06 CLIENT -> SERVER: QUIT
    2014-04-27 17:51:16 SERVER -> CLIENT:
    2014-04-27 17:51:16 SMTP ERROR: QUIT command failed: SMTP connect() failed. Message could not be sent.
    Mailer Error: SMTP connect() failed.
    

    Here is my code:

    $mail = new PHPMailer;
            $mail->IsSMTP();                                      // Set mailer to use SMTP
            $mail->Host = 'smtp.mandrillapp.com';                 // Specify main and backup server
            $mail->Port = 587;                                    // Set the SMTP port
            $mail->SMTPAuth = true;                               // Enable SMTP authentication
            $mail->Username = '[email protected]';                 // yes, I have entered my username mail
            $mail->Password = 'xxxxxxxxxxxx-xxxxxxxxx';           // yes, API key is here
            $mail->SMTPSecure = 'tls';                            // Enable encryption, 'ssl' also accepted
            $mail->From = '[email protected]';
            $mail->FromName = 'Your From name';
            if($test_mode) {
                $mail->SMTPDebug = 2;
                $mail->AddAddress('[email protected]');
            } else {
                $mail->AddAddress($email);
            }
            $mail->IsHTML(true);                                  // Set email format to HTML
            $mail->WordWrap = 70;                                 // Set word wrap to 70 characters
            //$mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
    
            $mail->Subject = 'Subject';
            $mail->Body    = 'This is the HTML message body <strong>in bold!</strong>';
            $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
    
            if(!$mail->Send()) {
                //redirect to
                echo 'Message could not be sent.<br>';
                echo 'Mailer Error: ' . $mail->ErrorInfo;
                exit;
            }
    

    EDIT: I can delete this:

    $mail->SMTPSecure = 'tls';
    

    and it will work! But now the encryption is disabled. Why is this not working with encryption enabled?

  • Giacomo1968
    Giacomo1968 about 10 years
    Yes, when you removed $mail->SMTPSecure = 'tls'; it was because php_openssl.dll was not loaded.
  • anvd
    anvd almost 5 years