PHPMailer GMail Электронная почта отправлена, но .. не получена - PullRequest
0 голосов
/ 08 апреля 2020

Я установил PHPMailer 6 и использую его в MVC приложении, как показано ниже, мое электронное письмо, очевидно, отправлено, но так и не получено:

<code>// Controller:

$this->sendmailer = new PHPMailer(true);
        //$this->sendmailer->isSMTP();
        $this->sendmailer->SMTPDebug = 2;
        $this->sendmailer->SMTPAuth = true;
        $this->sendmailer->SMTPSecure = 'tls';
        $this->sendmailer->Host = 'smtp.gmail.com';
        $this->sendmailer->Port = 587;
        $this->sendmailer->Username = 'xxxxxx@gmail.com';
        $this->sendmailer->Password = 'xxxxxxx';
        $this->sendmailer->setFrom('xxxxxxx@gmail.com', 'Test PHPMailer / GMail');

// In the inherited Controller...:


$mail=$this->sendmailer;

$subject="Mail Subject....";
$content="HTML content";

    $mail->addAddress('jmbrosselin@jmbdev.com', 'JM Brosselin');
    $mail->Subject = $subject;
    $mail->isHTML();
    $mail->msgHTML($content);

    echo '<pre>';
        echo $message;
        echo '<br/><hr><br/>';
        print_r($mail);
echo '
'; д ie ();

Примечание 1. Я закомментировал метод isSMTP (), который прервал рассылку, независимо от того, какую конфигурацию SMTP я использую (tls / 587 или ssl / 465 ...); В любом случае, вывод электронной почты кажется правильным; Примечание 2: я проверил этот конфиг в более простом стиле, отличном от MVC, и он отлично работает, например, он отправлен ... И получен!

Упс .. забыли добавить метод send в транскрипт кода .. Очевидно, он был у меня в оригинальном скрипте:

if (!$mail->send()) {
            $message='<br/>Mailer Error: '. $mail->ErrorInfo;
        } else {
            $message='<br/>Message sent!';
        }

Привет! и благодаря @Dhruvadeep. Я использую французскую консоль Google / Admin, поэтому меню несколько иные, но я применил «менее безопасный контроль приложений»; то, что я НЕ делаю, использует Инструкция "require 'PHPMailerAutoload.php';"; вместо этого я использую Composer и следующее:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

в моем «контроллере» ... Я, кажется, читал, что "require 'PHPMailerAutoload.php';" устарел, я использую v6.1.4 PHPMailer ... это правильно?

На самом деле, как сконфигурировано, запросы Gmail работают «случайным образом» (…!) и тратят немало времени на то, чтобы либо отправить сообщение в почтовый ящик получателя, либо ..not ! Я читал, что это может быть связано с тем, что GMail считает, что я рассылаю спам. Но не будет ли он фильтроваться / из почтового ящика получателя, а не из стороны, выдавшей его (например, GMAIL ...)? Ниже моей текущей настройки:

$this->sendmailer = new PHPMailer(true);
//$this->sendmailer->isSMTP();
$this->sendmailer->SMTPDebug = 2;

$this->sendmailer->Host = 'smtp.gmail.com';
//$this->sendmailer->Host =gethostbyname("smtp.gmail.com");
$this->sendmailer->Port = 587;
$this->sendmailer->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$this->sendmailer->SMTPAuth = true;
$this->sendmailer->Username = 'my_gmail_email_email@gmail.com';
$this->sendmailer->Password = 'my_gmail_email_pwd';
$this->sendmailer->setFrom('my_gmail_email_email', 'Test');

1 Ответ

0 голосов
/ 13 апреля 2020

На самом деле используйте последнюю версию руководства PhPMailer th3, как указано ниже. Также активируйте Google Less Secure App с помощью следующих

** Включение менее безопасных приложений для доступа к Gmail

Откройте консоль администратора Google (admin.google.com). Нажмите Безопасность> Основные настройки c.

В разделе Менее защищенные приложения выберите Go для настроек менее защищенных приложений.

В подокне выберите Принудительный доступ к менее защищенным приложениям для переключатель всех пользователей. ...

Нажмите кнопку Сохранить. **

require 'PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->setFrom('from@example.com', 'Your Name');
$mail->addAddress('myfriend@example.net', 'My Friend');
$mail->Subject  = 'First PHPMailer Message';
$mail->Body     = 'Hi! This is my first e-mail sent through PHPMailer.';
if(!$mail->send()) {
  echo 'Message was not sent.';
  echo 'Mailer error: ' . $mail->ErrorInfo;
} else {
  echo 'Message has been sent.';
}```
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...