За последние 24 часа нас посетили 18485 программистов и 1700 роботов. Сейчас ищут 803 программиста ...

Не могу настроить проверку smtp для отправки писем

Тема в разделе "Работа с почтой", создана пользователем professorX, 19 июн 2006.

  1. professorX

    professorX Активный пользователь

    С нами с:
    19 июн 2006
    Сообщения:
    16
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Убил уже уйму времени - никак не настроить. Нужно отправвлять письма с аттачем и без с проверкой smtp.

    скачал класс class.phpmailer.php - выдает ошибки.

    Есть у кого-нибудь кусок рабочего кода? либо какие-то ссылки.
     
  2. olo

    olo Активный пользователь

    С нами с:
    28 апр 2006
    Сообщения:
    272
    Симпатии:
    0
    мы - сообщество телепатов, поэтому прекрасно поняли, отправляеш ли ты письма с локального сервака или удаленно, и какие именно ошибки выдает твой класс.
     
  3. professorX

    professorX Активный пользователь

    С нами с:
    19 июн 2006
    Сообщения:
    16
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    пользователь заходит на сайт, заполняет форму и письмо отправляется. получается, что удаленно.
    ошибки такие:
    Message could not be sent.
    Mailer Error: Language string failed to load: recipients_failedprofessorX@yandex.ru
     
  4. olo

    olo Активный пользователь

    С нами с:
    28 апр 2006
    Сообщения:
    272
    Симпатии:
    0
    Памойму тут дело совсем не в почте. Придется дебажить почтовый класс и разбираться, какой-такой Language string он хочет load
     
  5. professorX

    professorX Активный пользователь

    С нами с:
    19 июн 2006
    Сообщения:
    16
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    я пытался...
    все сделано, как в примере.
    может, у кого будет рабочий кусок? просто тема для меня совсем неизвестная.
     
  6. professorX

    professorX Активный пользователь

    С нами с:
    19 июн 2006
    Сообщения:
    16
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    осталась только:
    Message could not be sent.

    Mailer Error: SMTP Error: The following recipients failed: professorX@yandex.ru
     
  7. olo

    olo Активный пользователь

    С нами с:
    28 апр 2006
    Сообщения:
    272
    Симпатии:
    0
    Гыгыгы. Как я и думал этот вопрос мало связан с почтой. Скачал класс, посмотрел где генерится сообщение данного вида, полез в файл с русскими сообщениями, он записан не полностью, отсюда и ошибка. Учись дебажить!!!
    Кстать по поводу самой отправки - он пытался вывести сообщение что письмо не отправлено. Советую попробовать ручками отправить письмо по тем же адресам и посмотреть, удасться ли
     
  8. professorX

    professorX Активный пользователь

    С нами с:
    19 июн 2006
    Сообщения:
    16
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    я думаю, может, неправильно указаны логин и пароль для smtp?
    логин и пароль должны быть от сервера smtp или от ящика, который указывается в from?

    не понимаю, в чем трабла.
    ящик существует, на который я посылаю, это мой ящик, почему же
    Mailer Error: SMTP Error: The following recipients failed: professorX@yandex.ru
     
  9. olo

    olo Активный пользователь

    С нами с:
    28 апр 2006
    Сообщения:
    272
    Симпатии:
    0
    да, логин и пароль для отправления писем. обычно они одинаковые с логином/паролем ящика. Блин, осваивай дебаг! Ета тока колдуны умеют лечить по фотографиям. Открывай класс "class.smtp.php" и смотри метод "function Recipient($to)". Твой сервер не принимает такой емайл. Как вариант можеш залезть в классы и подправить их чтобы не делали такой проверки
     
  10. professorX

    professorX Активный пользователь

    С нами с:
    19 июн 2006
    Сообщения:
    16
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    да смотрел я эту функцию! я не пойму, почему сервер не принимает такой ящик!!!
    и по-моему, это не в этой функции, а в классе class.phpmailer.php в функции Send()
     
  11. olo

    olo Активный пользователь

    С нами с:
    28 апр 2006
    Сообщения:
    272
    Симпатии:
    0
    сделай трассировку, узнай в каком именно месте возникает ошибка. если дело в почтовом серваке, то спроси провайдера. если нет, или сервер твой, то будем дальше думать :)
     
  12. Danilevsky

    Danilevsky Активный пользователь

    С нами с:
    12 фев 2006
    Сообщения:
    286
    Симпатии:
    0
    Адрес:
    Киев
    гыгы, да нормально этот класс работает. видимо тут ошибка кроется в его использовании. возможно вообще пароль не нужно указывать для отправки. А еще нужно другие ящики попробовать. Вообще насколько я помню к этому классу дохрена документации и примеров идет. Пробовать нужно и все получиться.
     
  13. professorX

    professorX Активный пользователь

    С нами с:
    19 июн 2006
    Сообщения:
    16
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    olo,
    как сделать трассировку?
    smtp должен быть тот, где ящик, с которого посылаем?

    пароль указывать нужно. я пробую - не получается.
     
  14. olo

    olo Активный пользователь

    С нами с:
    28 апр 2006
    Сообщения:
    272
    Симпатии:
    0
    я делаю трассировку очень просто. во все подозрительные места ставлю echo 'NNN', и уже по номеру NNN смотрю куда именно скрипт зашол. Когда ты с точностью до строки узнаеш где появляется (не выводится, а появляется) признак ошибки, тогда уже можно делать какието выводы
     
  15. professorX

    professorX Активный пользователь

    С нами с:
    19 июн 2006
    Сообщения:
    16
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    я обычно точно так же делаю...
    а на счет смтп?
     
  16. olo

    olo Активный пользователь

    С нами с:
    28 апр 2006
    Сообщения:
    272
    Симпатии:
    0
    ты хотя бы узнай где именно смтп не работает
    мне пока что кажется что он не возвращает ответ 250 или 251 при проверке емайла получателя, но я могу и ошибаться. так что ищи давай
     
  17. professorX

    professorX Активный пользователь

    С нами с:
    19 июн 2006
    Сообщения:
    16
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    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. Т. е. не отправляется из-за ресипиента... не понимаю, в чем трабла...
     
  18. olo

    olo Активный пользователь

    С нами с:
    28 апр 2006
    Сообщения:
    272
    Симпатии:
    0
    Значит иди в метод Recipient класса smtp и смотри там!
    Трассировка закончена когда найдена строка БЕЗ user_function, на которой происходит кердых
     
  19. professorX

    professorX Активный пользователь

    С нами с:
    19 июн 2006
    Сообщения:
    16
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    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)
     
  20. olo

    olo Активный пользователь

    С нами с:
    28 апр 2006
    Сообщения:
    272
    Симпатии:
    0
    Почемута так я и думал. Значит выводим полный запрос к smtp-серверу и полный ответ на него. По результатам делаем выводы
     
  21. professorX

    professorX Активный пользователь

    С нами с:
    19 июн 2006
    Сообщения:
    16
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    енто как???
     
  22. olo

    olo Активный пользователь

    С нами с:
    28 апр 2006
    Сообщения:
    272
    Симпатии:
    0
    несколькими строками выше в этом методе отправляется запрос, а потом считывается ответ. ты разве не заметил?
     
  23. professorX

    professorX Активный пользователь

    С нами с:
    19 июн 2006
    Сообщения:
    16
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    echo $rply . "<br>";

    получаем:
    550 Authorization required
     
  24. olo

    olo Активный пользователь

    С нами с:
    28 апр 2006
    Сообщения:
    272
    Симпатии:
    0
    мило. догадываешся что дальше делать?
     
  25. professorX

    professorX Активный пользователь

    С нами с:
    19 июн 2006
    Сообщения:
    16
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    у меня же указано, что есть авторизация...
    $mail->SMTPAuth = true;