PHPMailer - SMTP ERROR: команда паролей не удалась при отправке почты с моего сервера
Я использовал концепцию phpmailer() для отправки почты пользователям с моего общего сервера с использованием php script, но я не могу отправить, хотя все верно в моем script в соответствии с кодом phpmailer.
Мой код:
$message = " This is testing message from my server";
$mail = new PHPMailer(); // create a new object
$mail->IsSMTP(); // enable SMTP
$mail->Host = "smtp.gmail.com";
$mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for GMail
$mail->Port = 465; // or 587
$mail->IsHTML(true);
$mail->Username = "[email protected]"; // My gmail username
$mail->Password = "************"; // My Gmail Password
$mail->SetFrom("[email protected]");
$mail->Subject = "Test Mail from my Server";
$mail->Body = $message;
$mail->AddAddress($email);
if($mail->Send())
{
print json_encode("SUCCESS");
}
else
{
echo "Mailer Error: " . $mail->ErrorInfo;
}
Примечание: Я использовал "GMail" в качестве моего SMTP-сервера, а SMTPSecure - "ssl", а порт "465", а имя пользователя и пароль - это мое имя пользователя и пароль GMail.
Я использовал общий сервер VPS, и я сохранил свой php script на этом сервере.
Я думаю, что нет проблем в моем php script, и я не знаю, почему он не работает.
Я получил ОШИБКУ, как это.
2014-02-21 12:30:11 CLIENT -> SERVER: EHLO jkcorporates.com
2014-02-21 12:30:11 CLIENT -> SERVER: AUTH LOGIN
2014-02-21 12:30:11 CLIENT -> SERVER: bW9vcnRoaS5tcmsxMEBnbWFpbC5jb20=
2014-02-21 12:30:11 CLIENT -> SERVER: OTk0MTI0MTE0MA==
2014-02-21 12:30:11 SMTP ERROR: Password command failed: 534-5.7.14
534-5.7.14 i-_eumA> Please log in via your web browser and then try again.
534 5.7.14 54 k76sm17979938yho.18 - gsmtp
2014-02-21 12:30:11 CLIENT -> SERVER: QUIT
" The ERROR is " SMTP connect() failed.
Пожалуйста, дайте некоторое решение для этого.
Спасибо в Advance.
Помните: Я использую имя общего сервера "VPS.mydomain.com", и я хочу использовать GMail в качестве моего SMTP-сервера для отправки почты пользователям.
Ответы
Ответ 1
Немного поздно, но, возможно, кто-то найдет это полезным.
Ссылки, которые исправляют проблему (вы должны войти в учетную запись google):
https://security.google.com/settings/security/activity?hl=en&pli=1
https://www.google.com/settings/u/1/security/lesssecureapps
https://accounts.google.com/b/0/DisplayUnlockCaptcha
Некоторое объяснение того, что происходит:
Эта проблема может быть вызвана "менее безопасными" приложениями, пытающимися использовать учетную запись электронной почты (это соответствует подсказке Google, не уверен, как они оценивают, что является безопасным, а что нет) ИЛИ, если вы пытаетесь войти в систему несколько время в строке ИЛИ, если вы меняете страны (например, используйте VPN, переместите код на другой сервер или попробуйте войти в систему из разных частей мира).
Чтобы решить, мне пришлось: (первый раз)
- войти в мою учетную запись через веб-сайт
- просмотреть последние попытки использовать учетную запись и принять подозрительный доступ: ЭТА ССЫЛКА
- отключить функцию блокировки подозрительных приложений/технологий: ЭТА ССЫЛКА
Это сработало впервые, но через несколько часов, вероятно, потому, что я много тестировал проблему, и она не была исправлена с использованием вышеупомянутого метода. Кроме того, мне пришлось очистить капчу (забавная картинка, в которой вам предлагается переписать слово или предложение при входе в любую учетную запись в настоящее время слишком много раз):
- после входа в мою учетную запись я пошел ЗДЕСЬ
- Нажмите кнопку continue
Надеюсь, это поможет.
Ответ 2
Используйте это:
https://www.google.com/settings/u/1/security/lesssecureapps
https://accounts.google.com/b/0/DisplayUnlockCaptcha
https://security.google.com/settings/security/activity?hl=en&pli=1
эта ссылка разрешает доступ к учетной записи google
ОБНОВЛЕНИЕ 19-05-2017:
Эти URL-адреса, которые вы должны посетить с IP-адреса, который будет отправлять по электронной почте
Ответ 3
Как уже было предложено другими, вы можете включить "менее безопасные" приложения или просто переключиться с ssl
на tls
:
$mailer->Host = 'tls://smtp.gmail.com';
$mailer->SMTPAuth = true;
$mailer->Username = "[email protected]";
$mailer->Password = "***";
$mailer->SMTPSecure = 'tls';
$mailer->Port = 587;
При использовании tls
нет необходимости предоставлять доступ для менее защищенных приложений, просто убедитесь, что включен IMAP.
Ответ 4
Устранена проблема - PHPMailer - SMTP ERROR: команда паролей не удалась при отправке почты с моего сервера
require_once('class.phpmailer.php');
include("class.smtp.php");
$nameField = $_POST['name'];
$emailField = $_POST['email'];
$messageField = $_POST['message'];
$phoneField = $_POST['contactno'];
$cityField = $_POST['city'];
$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch
$mail->IsSMTP(); // telling the class to use SMTP
$body .= $nameField;
try {
//$mail->Host = "mail.gmail.com"; // SMTP server
$mail->SMTPDebug = 2; // enables SMTP debug information (for testing)
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->SMTPSecure = "ssl"; // sets the prefix to the servier
$mail->Host = "smtp.gmail.com"; // sets GMAIL as the SMTP server
$mail->Port = 465; // set the SMTP port for the GMAIL server
$mail->SMTPKeepAlive = true;
$mail->Mailer = "smtp";
$mail->Username = "[email protected]"; // GMAIL username
$mail->Password = "********"; // GMAIL password
$mail->AddAddress('[email protected]', 'abc');
$mail->SetFrom('[email protected]', 'def');
$mail->Subject = 'PHPMailer Test Subject via mail(), advanced';
$mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically
$mail->MsgHTML($body);
$mail->Send();
echo "Message Sent OK</p>\n";
header("location: ../test.html");
} catch (phpmailerException $e) {
echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
echo $e->getMessage(); //Boring error messages from anything else!
}
Важно:
Перейдите в настройку Google и включите приложения "менее безопасные". Это будет работать.
Он работал у меня.
Ответ 5
Я сталкиваюсь с той же проблемой и думаю, что знаю, почему это происходит.
Учетная запись gmail, которую я использую, обычно используется в Индии, а используемый мной веб-сервер находится в Нидерландах.
Google уведомляет о том, что была попытка входа в систему из необычного местоположения и требуется войти в нее с помощью веб-браузера.
Кроме того, мне пришлось принять подозрительный доступ к учетной записи gmail с помощью https://security.google.com/settings/security/activity
Но в конце концов моя проблема еще не решена, потому что мне нужно войти в gmail из местоположения в Нидерландах.
Надеюсь, это поможет вам немного! (извините, я не читаю ответы по электронной почте на этот адрес электронной почты)
Ответ 6
Если вы пользователь G Suit, его можно решить администратором
- Перейдите в панель администратора
- Введите верхнюю строку поиска " Безопасность" (выберите значок "Безопасность с помощью экрана" )
- Откройте Основные настройки
- Перейти в раздел Менее безопасные приложения
- Нажмите: перейдите к настройкам для менее безопасных приложений →
И теперь выберите одну из кнопок Radio
a) Отключить доступ к менее безопасным приложениям для всех пользователей (рекомендуется)
b) Разрешить пользователям управлять своим доступом к менее безопасным приложениям
c) Обеспечить доступ к менее безопасным приложениям для всех пользователей (не рекомендуется)
Обычно он не работает из-за а)! И начнет работать сразу с опцией c). b) - опция должна иметь больше конфигурации для каждого пользователя в GSuit
Надеюсь, что это поможет
Ответ 7
Эта ошибка связана с дополнительными функциями безопасности gmail.
Как только эта ошибка будет сгенерирована... Пожалуйста, войдите в свою учетную запись gmail.., вы можете найти предупреждение безопасности от GOOGLE. Следуйте по почте... проверьте на клик для менее безопасного варианта. Затем повторите попытку phpmailer..
Ответ 8
Для тех, кто все еще не может заставить его работать, попробуйте следующее в дополнение к методу, предоставленному @CallMeBob.
php.ini
- Перейдите в C:\xampp\php, отредактируйте файл php.ini с помощью блокнота.
- Нажмите CTRL + F на клавиатуре, введите sendmail_path на панели поиска и дважды нажмите Найти далее.
- Теперь вы должны быть в разделе [mail munction].
Удалите точку с запятой для этой строки:
sendmail_path = "\" C:\xampp\sendmail\sendmail.exe\ "-t"
Добавьте точку с запятой для этой строки:
sendmail_path = "C:\XAMPP\mailtodisk\mailtodisk.exe"
SendMail.ini
- Перейдите в C:\xampp\sendmail, отредактируйте файл sendmail.ini с помощью блокнота
- Измените следующее:
Примечание:
** smtp_port должен совпадать с вашими, написанными в вашем php-коде.
** Не забудьте изменить свое имя пользователя gmail и пароль gmail на любую учетную запись, которую вы используете.
**
Надеюсь это поможет!:)
Ответ 9
Ваша почта не будет отправлена онлайн, если вы не пройдете двухэтапную проверку своей учетной записи электронной почты и не воспользуетесь этим паролем.