PHPMailer SMTP connect failed

2020-04-10 03:14发布

问题:

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 = 'example@mail.com';                 // 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 = 'from@example.com';
        $mail->FromName = 'Your From name';
        if($test_mode) {
            $mail->SMTPDebug = 2;
            $mail->AddAddress('mymail@gmail.com');
        } 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?

回答1:

Uncoment php_openssl.dll in php.ini



回答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