Поскольку я обнаружил, что встроенная функция почты в PHP имеет уязвимости безопасности, я пытался использовать PEAR. Я установил и сделал необходимую конфигурацию на своем localhost (WAMP server 2.2). Однако каждый раз, когда я пытаюсь отправить электронное письмо, отображается следующее сообщение.
error: authentication failure [SMTP: Invalid response code received from server (code: 535, response: 5.7.8 Username and Password not accepted. Learn more at 5.7.8 http://support.google.com/mail/bin/answer.py?answer=14257 gg10sm16772067pbc.46 - gsmtp)]
.
И имя пользователя, и пароль верны. Я проверил его снова и снова. Я проверил онлайн-документы и другие подобные вопросы другими участниками, но я все еще придерживаюсь этой проблемы. Любое понимание этой проблемы очень ценится. И кстати вот PHP-код, который я использовал для отправки электронной почты.
<?php require "Mail.php"; $from = "myemail@here.com"; $to = "mysender@here.com"; $subject= "hiii"; $body = "\n\nEmail contents here"; $host = "ssl://smtp.gmail.com";//"smtp.gmail.com"; $port = "465";//"587"; $user = "my username"; $pass = "mypassword"; $headers = array("From"=> $from, "To"=>$to, "Subject"=>$subject); $smtp = @Mail::factory("smtp", array("host"=>$host, "port"=>$port, "auth"=> true, "username"=>$user, "password"=>$pass)); $mail = @$smtp->send($to, $headers, $body); if(PEAR::isError($mail)){ echo "error: {$mail->getMessage()}"; }else{ echo "Message sent"; } ?>
Имя пользователя, которое вы используете для создания объекта SMTP, должно быть вашим полным адресом электронной почты gmail, например, fred.flintstone@gmail.com, а переменная хоста должна быть просто «smtp.gmail.com» – ей не нужно начинать с "SSL: //"
Это приведет к отправке электронного письма без каких-либо проблем. (Я поместил ваш код в файл с именем 20031009.php, исправил ошибки и внес несколько других изменений, чтобы он работал с моей учетной записью gmail и запускал его, вот результат.)
$ php 20031009.php Message sent
С другой стороны, похоже, вам нужно обменивать значения для $ from и $ to. 🙂
Это рабочий код целиком (с измененными данными учетной записи и электронной почты)
require "Mail.php"; $to = "mysender@here.com"; $from = "myemail@here.com"; // the email address $subject = "hiii"; $body = "\n\nEmail contents here"; $host = "smtp.gmail.com"; $port = "587"; $user = "my username"; $pass = "mypassword"; $headers = array("From"=> $from, "To"=>$to, "Subject"=>$subject); $smtp = @Mail::factory("smtp", array("host"=>$host, "port"=>$port, "auth"=> true, "username"=>$user, "password"=>$pass)); $mail = @$smtp->send($to, $headers, $body); if (PEAR::isError($mail)){ echo "error: {$mail->getMessage()}"; } else { echo "Message sent"; }