When using PHPmailer or swift mailer to send mail through mail.google.com, both timeout after 30 seconds. The PHPmailer code is as follows
<?php
// Import PHPMailer classes into the global namespace
// These must be at the top of your script, not inside a function
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
//Load Composer's autoloader
require 'vendor/autoload.php';
$mail = new PHPMailer(true); // Passing `true` enables exceptions
try {
//Server settings
$mail->SMTPDebug = 2; // Enable verbose debug output
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'mail.google.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = '[my email]@gmail.com'; // SMTP username
$mail->Password = '[password]'; // SMTP password
$mail->SMTPSecure = 'ssl'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 465; // TCP port to connect to
//Recipients
$mail->setFrom('[my email]@gmail.com', 'Adam Johnston');
$mail->addAddress('[my email]@gmail.com', 'Adam Johnston'); // Add a recipient
//$mail->addAddress('ellen@example.com'); // Name is optional
//$mail->addReplyTo('info@example.com', 'Information');
//$mail->addCC('cc@example.com');
//$mail->addBCC('bcc@example.com');
//Attachments
//$mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments
//$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name
//Content
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'Here is the subject';
$mail->Body = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo;
}
Here is the swift mailer code:
require_once './vendor/autoload.php';
// Create the Transport
$transport = (new Swift_SmtpTransport('mail.google.com', 465))
->setUsername('[my email]@gmail.com')
->setPassword('[password]')
;
// Create the Mailer using your created Transport
$mailer = new Swift_Mailer($transport);
// Create a message
$message = (new Swift_Message('Wonderful Subject'))
->setFrom(['[my email]@gmail.com' => 'Adam Johnston'])
->setTo(['[my email]@gmail.com' => 'Adam Johnston'])
->setBody('Here is the message itself')
;
// Send the message
$result = $mailer->send($message);
Because both are timing out, I'm assuming both are installed correctly but I've set something up incorrectly. Thanks in advance.
For gmail the SMTP server (Host
field) should be smtp.gmail.com
.