This works perfectly in my old server.
2020-07-18 16:37:45 SMTP ERROR: Failed to connect to server: Connection timed out (110)
SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
I am now using CentOS 7 and php7.3.2
What I’ve tried.
- use port 587,465,25
- use host smtp.gmail.com,108.177.122.108
This is my code:
<?php
require_once "config.php";
use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerSMTP;
use PHPMailerPHPMailerException;
require 'vendor/autoload.php';
function generateRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
if($_SERVER["REQUEST_METHOD"] == "POST"){
$randompassword = generateRandomString();
$email = $_POST['email'];
$mail = new PHPMailer(true);
try {
$connect->query("SET NAMES 'utf8'");
$insertSql = "INSERT INTO users (username, password, email, forgot) VALUES ('$name', '$randompassword', '$email', 1)";
$status = $connect->query($insertSql);
$mail->isSMTP(); // Send using SMTP
$mail->SMTPAuth = true;
$mail->Host = 'smtp.gmail.com'; // Set the SMTP server to send through
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = '[email protected]'; // SMTP username
$mail->Password = '*******'; // SMTP password
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged
$mail->Port = 587; // TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS` above
$mail->Charset = "UTF-8";
$mail->setFrom('[email protected]', 'Mailer');
$mail->addAddress($email); // Name is optional
$mail->addReplyTo('[email protected]', 'to'); // Set email format to HTML
$mail->Subject = 'subject';
$mail->Body = 'body'
$mail->send();
echo '<script>alert("already send");</script>';
}
catch (Exception $e) {
echo "<script>alert('error');</script>";
echo !extension_loaded('openssl')?"Not Available":"Available";
exit;
}
}
?>
UPDATE
I test telnet smtp.gmail.com for port 25 465 587,the result is also connection time out.Then I test on my computer gets a normal result.
2
Answers
I'm using a Linode Server, they blocked port 25, 465, 587, so I can't send mail and telnet smtp.gmail.com. for more infomation, ckick here.
Network problem. Firewall is blocking those ports. Surprised it’s blocking the SSL port as well. Once you resolve that, you should be good to go. As an alternative, you could change the port on the SMTP server to a custom port that your provider will allow you to use (25000, 25252, etc).