यह मेरे पुराने सर्वर में पूरी तरह से काम करता है।

2020-07-18 16:37:45 एसएमटीपी त्रुटि: सर्वर से कनेक्ट करने में विफल: कनेक्शन का समय समाप्त (110) एसएमटीपी कनेक्ट () विफल रहा। https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting मैं अब CentOS 7 और php7.3.2 का उपयोग कर रहा हूँ

मैंने जो कोशिश की है।

  • पोर्ट 587,465,25 . का उपयोग करें
  • होस्ट smtp.gmail.com,108.177.122.108 . का उपयोग करें

यह मेरा कोड है:

<?php
require_once "config.php";
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
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   = 'username@gmail.com';                     // 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('username@gmail.com', 'Mailer');
        $mail->addAddress($email);               // Name is optional
        $mail->addReplyTo('to@gmail.com', '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;
    }
}
?>

अपडेट करें

मैं पोर्ट 25 465 587 के लिए telnet smtp.gmail.com का परीक्षण करता हूं, परिणाम भी कनेक्शन समय समाप्त हो जाता है। फिर मैं अपने कंप्यूटर पर परीक्षण करता हूं तो सामान्य परिणाम मिलता है।

0
Derek Kuo 18 जुलाई 2020, 19:51

2 जवाब

सबसे बढ़िया उत्तर

मैं एक लाइनोड सर्वर का उपयोग कर रहा हूं, उन्होंने पोर्ट 25, 465, 587 को ब्लॉक कर दिया है, इसलिए मैं मेल और टेलनेट smtp.gmail.com नहीं भेज सकता। अधिक जानकारी के लिए, यहां क्लिक करें।

2
Derek Kuo 21 अगस्त 2020, 07:32

नेटवर्क की समस्या। फ़ायरवॉल उन पोर्ट को ब्लॉक कर रहा है। आश्चर्य है कि यह एसएसएल पोर्ट को भी अवरुद्ध कर रहा है। एक बार जब आप इसे हल कर लेते हैं, तो आपको जाने के लिए अच्छा होना चाहिए। एक विकल्प के रूप में, आप SMTP सर्वर पर पोर्ट को एक कस्टम पोर्ट में बदल सकते हैं जिसे आपका प्रदाता आपको उपयोग करने की अनुमति देगा (25000, 25252, आदि)।

0
Paul Papasavas 23 जुलाई 2020, 16:20