Главное, что вы сделали неправильно, это:
$mail->SMTPDebug = 1;
Это покажет вам только то, что говорит SMTP-клиент (т.е. PHPMailer), а не то, что говорит Gmail; вам нужно установить его на 2
, чтобы увидеть ответы сервера. Скорее всего, gmail возвращал сообщение, подобное этому:
5.7.14 Пожалуйста, войдите в систему через веб-браузер и повторите попытку
Gmail очень требователен вход в систему с использованием новых механизмов, особенно при включении «менее безопасных» приложений. Поэтому, когда вы сказали:
войдите в систему вручную, чтобы проверить правильность имени пользователя и пароля (они есть)
действие, которое очистит блок и позволит вашему код для работы, так что это не имеет ничего общего с вашим кодом. Пример gmail, предоставляемый с PHPMailer, на самом деле не делает ничего, отличного от того, что у вас уже было; настройки basi c такие же, как у вас.
Также обратите внимание, что эта точная проблема описана в руководстве по устранению неполадок PHPMailer , которое всегда должно быть первым, куда вы смотрите для PHPMailer ответы.