Я использовал концепцию phpmailer () для отправки почты пользователям с моего общего сервера с использованием php-скрипта, но я не могу отправить, хотя все верно в моем скрипте в соответствии с кодом 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 = "moorthi.mrk10@gmail.com"; // My gmail username $mail->Password = "************"; // My Gmail Password $mail->SetFrom("moorthi.mrk10@gmail.com"); $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-скрипт на этом сервере.
Я думаю, что в моем php-скрипте нет проблем, и я не знаю, почему это не работает.
Я получил ОШИБКУ вот так.
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.
Пожалуйста, дайте некоторое решение для этого.
Заранее спасибо.
Помните: я использую имя общего сервера «VPS.mydomain.com», и я хочу использовать GMail в качестве моего SMTP-сервера для отправки почты пользователям.
Немного поздно, но, возможно, кто-то найдет это полезным.
Ссылки, которые устраняют проблему (вы должны войти в учетную запись 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, переместите код на другой сервер или попробуйте войти в систему из разных уголков мира).
Чтобы решить, я должен был: (первый раз)
Это работало впервые, но несколько часов спустя, вероятно, потому, что я много тестировал проблему, и она не была исправлена с использованием вышеуказанного метода. Кроме того, мне пришлось очистить капчу (забавная картинка, в которой вам предлагается переписать слово или предложение при входе в любую учетную запись в настоящее время слишком много раз):
Надеюсь это поможет.
Использовать это:
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-адреса, который будет отправлять по электронной почте
Решена проблема – 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 = "xxxxx@gmail.com"; // GMAIL username $mail->Password = "********"; // GMAIL password $mail->AddAddress('sendto@gmail.com', 'abc'); $mail->SetFrom('xxxxxx@gmail.com', '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! }
в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 = "xxxxx@gmail.com"; // GMAIL username $mail->Password = "********"; // GMAIL password $mail->AddAddress('sendto@gmail.com', 'abc'); $mail->SetFrom('xxxxxx@gmail.com', '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 и включите «менее безопасные» приложения. Это будет работать. Это работало для меня.
Как уже говорили другие, вы можете включить «менее безопасные» приложения или просто переключиться с ssl
на tls
:
$mailer->Host = 'tls://smtp.gmail.com'; $mailer->SMTPAuth = true; $mailer->Username = "xxx@gmail.com"; $mailer->Password = "***"; $mailer->SMTPSecure = 'tls'; $mailer->Port = 587;
При использовании tls
нет необходимости предоставлять доступ для менее безопасных приложений, просто убедитесь, что IMAP включен.
Я сталкиваюсь с той же проблемой и думаю, что знаю, почему это происходит.
Учетная запись gmail, которую я использую, обычно используется в Индии, а используемый мной веб-сервер находится в Нидерландах.
Google уведомляет о том, что была попытка входа в систему из необычного местоположения и требует входа из этого места через веб-браузер.
Кроме того, я должен был принять подозрительный доступ к учетной записи gmail с помощью https://security.google.com/settings/security/activity
Но в конце концов моя проблема еще не решена, потому что я должен войти в gmail из местоположения в Нидерландах.
Надеюсь, это поможет вам немного! (извините, я не читаю ответы по электронной почте на этот адрес электронной почты)
Если вы пользователь G Suit, он может быть разрешен администратором
И теперь выберите одну из кнопок Radio a) Отключите доступ к менее безопасным приложениям для всех пользователей (рекомендуется) b) Разрешить пользователям управлять своим доступом к менее защищенным приложениям c) Обеспечить доступ к менее безопасным приложениям для всех пользователей (не рекомендуется)
Обычно он не работает из-за а)! И начнет работать сразу с опцией c). b) – опция должна иметь больше конфигурации для каждого пользователя в GSuit
Надеюсь, поможет
Эта ошибка связана с дополнительными функциями безопасности gmail.
Как только эта ошибка будет сгенерирована … Пожалуйста, войдите в свою учетную запись gmail .. там вы можете найти предупреждение безопасности от GOOGLE. Следуйте по почте … проверьте на клик для менее безопасного варианта. Затем попробуйте снова phpmailer ..
Для тех, кто все еще не может заставить его работать, попробуйте следующее в дополнение к методу, предоставленному @CallMeBob.
Удалите точку с запятой для этой строки: sendmail_path = "\" C: \ xampp \ sendmail \ sendmail.exe \ "-t"
Добавьте точку с запятой для этой строки: sendmail_path = "C: \ xampp \ mailtodisk \ mailtodisk.exe"
Заметка:
** smtp_port должен совпадать с вашими, написанными в вашем php-коде.
** Не забудьте изменить свое имя пользователя gmail и пароль gmail на любую учетную запись, которую вы используете.
**
Надеюсь это поможет! 🙂