Аутентификация в gmail с помощью PHPMailer

#php #email #smtp #gmail #phpmailer

#php #Адрес электронной почты #smtp #gmail #phpmailer

Вопрос:

Я пытаюсь отправить электронное письмо с формой с помощью PHPMailer, но это работает плохо. С локальным хостом xampp он работает отлично, но при загрузке на мой сайт он вызывает ошибки, после проверки я понял, что это потому, что gmail блокирует меня (я уже включил менее безопасные приложения в gmail) Единственный способ, которым это работает, — удалить isSmtp() из кода, но я не думаю, что это очень хорошая идея. Пожалуйста, какие-либо предложения? Код ниже:

     if (array_key_exists('attachment', $_FILES)) {
    $img_name = $_FILES['attachment']['name'];
    $upload = tempnam(sys_get_temp_dir(), hash('sha256', $_FILES['attachment']['name']));
    $uploadfile = $_SERVER['DOCUMENT_ROOT'].'/'.$img_name;
    if (move_uploaded_file($_FILES['attachment']['tmp_name'], $uploadfile)) {
        if (!$err) {
            $mail = new PHPMailer(true);
          //  $mail->isSMTP();
            // $mail->SMTPDebug = 3;
            $mail->SMTPSecure = 'tls';
            $mail->Host = 'smtp.gmail.com';
            // set a port
            $mail->Port = 587;
            $mail->SMTPAuth = true;
            // set login detail for gmail account
            $mail->Username = '******';
            $mail->Password = '********';
            $mail->CharSet = 'utf-8';
            // set subject
            $mail->setFrom($email, $username);
            $mail->addAddress($to);
            $mail->addReplyTo($email, $username);
            $mail->addAttachment($uploadfile, 'My uploaded image');
            $mail->IsHTML(true);
            $mail->Subject = 'Contact form: Testing Feedback';
            $mail->Body = $reason;
            if (!$mail->send()) {
                $msg .= "Mailer Error: " . $mail->ErrorInfo;
            } else {
                $msg .= "Message sent!";
            }
        }
    } else {
                $msg .= 'Failed to move file to ' . $uploadfile;
    }
}
  

Получение следующих ошибок

 Fatal error: Uncaught PHPMailerPHPMailerException: SMTP Error: Could not authenticate. in /storage/ssd1/218/15386218/public_html/vendor/phpmailer/phpmailer/src/PHPMailer.php:2063 Stack trace: #0 /storage/ssd1/218/15386218/public_html/vendor/phpmailer/phpmailer/src/PHPMailer.php(1878): PHPMailerPHPMailerPHPMailer->smtpConnect(Array) #1 /storage/ssd1/218/15386218/public_html/vendor/phpmailer/phpmailer/src/PHPMailer.php(1601): PHPMailerPHPMailerPHPMailer->smtpSend('Date: Thu, 12 N...', 'This is a multi...') #2 /storage/ssd1/218/15386218/public_html/vendor/phpmailer/phpmailer/src/PHPMailer.php(1437): PHPMailerPHPMailerPHPMailer->postSend() #3 /storage/ssd1/218/15386218/public_html/index.php(72): PHPMailerPHPMailerPHPMailer->send() #4 {main} thrown in /storage/ssd1/218/15386218/public_html/vendor/phpmailer/phpmailer/src/PHPMailer.php on line 2063
  

Комментарии:

1. Похоже, что они могут быть вашими реальными учетными данными. Пожалуйста, всегда подвергайте цензуре имена пользователей и пароли при совместном использовании кода.

2. Пожалуйста, также сообщайте о любых ошибках, которые вы получаете. Мы не знаем, что происходит, когда вы говорите, что это «не работает хорошо» или «есть проблема».

3. @RoAchterberg Спасибо, мой плохой!! добавлены ошибки в проблеме

4. Комментирование isSMTP только сдвинет проблему с мертвой точки, а не решит ее. Пожалуйста, прочитайте, что говорится в руководстве по устранению неполадок PHPMailer об аутентификации в gmail . В основном дело в том, что gmail делает много нестандартных вещей, которые затрудняют подключение; это gmail ломает вещи, а не клиент.

5. Существует несколько причин, по которым он может работать локально, а не на вашем сервере: ваш хостинг-провайдер может перенаправлять трафик; gmail обнаруживает местоположение входа, отличное от вашего обычного, и накладывает дополнительные ограничения. Если вы установите $mail->SMTPDebug = 2; , вы, по крайней мере, сможете видеть, что говорит сервер, и то, что он говорит , скорее всего, будет описано в руководстве по устранению неполадок.