Убил уже уйму времени - никак не настроить. Нужно отправвлять письма с аттачем и без с проверкой smtp. скачал класс class.phpmailer.php - выдает ошибки. Есть у кого-нибудь кусок рабочего кода? либо какие-то ссылки.
мы - сообщество телепатов, поэтому прекрасно поняли, отправляеш ли ты письма с локального сервака или удаленно, и какие именно ошибки выдает твой класс.
пользователь заходит на сайт, заполняет форму и письмо отправляется. получается, что удаленно. ошибки такие: Message could not be sent. Mailer Error: Language string failed to load: recipients_failedprofessorX@yandex.ru
Памойму тут дело совсем не в почте. Придется дебажить почтовый класс и разбираться, какой-такой Language string он хочет load
я пытался... все сделано, как в примере. может, у кого будет рабочий кусок? просто тема для меня совсем неизвестная.
осталась только: Message could not be sent. Mailer Error: SMTP Error: The following recipients failed: professorX@yandex.ru
Гыгыгы. Как я и думал этот вопрос мало связан с почтой. Скачал класс, посмотрел где генерится сообщение данного вида, полез в файл с русскими сообщениями, он записан не полностью, отсюда и ошибка. Учись дебажить!!! Кстать по поводу самой отправки - он пытался вывести сообщение что письмо не отправлено. Советую попробовать ручками отправить письмо по тем же адресам и посмотреть, удасться ли
я думаю, может, неправильно указаны логин и пароль для smtp? логин и пароль должны быть от сервера smtp или от ящика, который указывается в from? не понимаю, в чем трабла. ящик существует, на который я посылаю, это мой ящик, почему же Mailer Error: SMTP Error: The following recipients failed: professorX@yandex.ru
да, логин и пароль для отправления писем. обычно они одинаковые с логином/паролем ящика. Блин, осваивай дебаг! Ета тока колдуны умеют лечить по фотографиям. Открывай класс "class.smtp.php" и смотри метод "function Recipient($to)". Твой сервер не принимает такой емайл. Как вариант можеш залезть в классы и подправить их чтобы не делали такой проверки
да смотрел я эту функцию! я не пойму, почему сервер не принимает такой ящик!!! и по-моему, это не в этой функции, а в классе class.phpmailer.php в функции Send()
сделай трассировку, узнай в каком именно месте возникает ошибка. если дело в почтовом серваке, то спроси провайдера. если нет, или сервер твой, то будем дальше думать
гыгы, да нормально этот класс работает. видимо тут ошибка кроется в его использовании. возможно вообще пароль не нужно указывать для отправки. А еще нужно другие ящики попробовать. Вообще насколько я помню к этому классу дохрена документации и примеров идет. Пробовать нужно и все получиться.
olo, как сделать трассировку? smtp должен быть тот, где ящик, с которого посылаем? пароль указывать нужно. я пробую - не получается.
я делаю трассировку очень просто. во все подозрительные места ставлю echo 'NNN', и уже по номеру NNN смотрю куда именно скрипт зашол. Когда ты с точностью до строки узнаеш где появляется (не выводится, а появляется) признак ошибки, тогда уже можно делать какието выводы
ты хотя бы узнай где именно смтп не работает мне пока что кажется что он не возвращает ответ 250 или 251 при проверке емайла получателя, но я могу и ошибаться. так что ищи давай
for($i = 0; $i < count($this->to); $i++) { if(!$this->smtp->Recipient($this->to[$i][0])) echo "333<br>"; $bad_rcpt[] = $this->to[$i][0]; } вот, выдается 333. Т. е. не отправляется из-за ресипиента... не понимаю, в чем трабла...
Значит иди в метод Recipient класса smtp и смотри там! Трассировка закончена когда найдена строка БЕЗ user_function, на которой происходит кердых
if($code != 250 && $code != 251) { echo "888!<br>"; $this->error = array("error" => "RCPT not accepted from server", "smtp_code" => $code, "smtp_msg" => substr($rply,4)); if($this->do_debug >= 1) { echo "999!<br>"; echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF; } return false; } выдается 888! значит ошибка здесь: if($code != 250 && $code != 251)
Почемута так я и думал. Значит выводим полный запрос к smtp-серверу и полный ответ на него. По результатам делаем выводы
несколькими строками выше в этом методе отправляется запрос, а потом считывается ответ. ты разве не заметил?