Solving PHPMailer and GMail connection failed issue

System Administration

Strange behaviour – it just stopped working 10 days ago and after a long search found a solution in specifying additional parameters in SSL connection, so working example should be like this:

try 
{
  $mail = new PHPMailer();
  $mail->IsSMTP();
  $mail->SMTPDebug = 2;
  $mail->SMTPAuth = true;
  $mail->SMTPSecure = 'ssl';
  $mail->SMTPOptions = array
  (
    'ssl' => array
    (
      'verify_peer' => false,
      'verify_peer_name' => false,
      'allow_self_signed' => true
    )
  );
  $mail->Host = "smtp.gmail.com";
  $mail->Port = 465;
  $mail->IsHTML(true);
  $mail->Username = GOOGLE_SMTP_USERNAME;
  $mail->Password = GOOGLE_SMTP_PASSWORD;
  $mail->SetFrom(SMTP_USERNAME);
  $mail->Subject = "Test";
  $mail->Body = "hello";
  $mail->AddAddress(YOUR_RECEIVING_EMAIL);
 
  if(!$mail->Send()) 
  {
    echo "Mailer Error: " . $mail->ErrorInfo;
  } 
  else 
  {
    echo "Message has been sent";
  }
} 
catch (phpmailerException $e) 
{
  $errors[] = $e->errorMessage();
}
catch (Exception $e) 
{
  $errors[] = $e->getMessage(); 
}