I want to send an email without SSL using PHPMailer. I have enabled the debug mode so that I can check the details in the logs.
$mail = new PHPMailerPHPMailerPHPMailer();
$mail->IsSMTP(true); // enable SMTP
$mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->SMTPSecure = false; // secure transfer enabled REQUIRED for Gmail
$mail->Host = "mail.company.co.uk";
$mail->Port = 25; // or 587
$mail->IsHTML(true);
$mail->Username = "email@company.co.uk";
$mail->Password = "password_of_username";
$mail->SetFrom($email,$name);
$mail->Subject = $subject;
$mail->Body = $message;
$mail->AddAddress($to);
This is giving an exception:
2018-09-28 10:04:27 CLIENT -> SERVER: EHLO localhost<br> 2018-09-28 10:04:27 CLIENT -> SERVER: STARTTLS<br> SMTP Error: Could not connect to SMTP host.<br> 2018-09-28 10:04:28 CLIENT -> SERVER: QUIT<br> 2018-09-28 10:04:28 <br> SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting<br> Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
Advertisement
Answer
You’ve based your code on an old example, which doesn’t help. You can’t see what’s going on because you’ve only used 1 for SMTPDebug; set it to 2.
Your mail server is advertising that it supports STARTTLS on port 25, so PHPMailer is using it automatically. You can disable encryption entirely by doing this:
$mail->SMTPAutoTLS = false; $mail->SMTPSecure = false;
However, I’d recommend not doing this; fix your TLS config instead. You probably need to update your local CA certificate bundle – see the troubleshooting guide for more details.