Makc666 0 Опубликовано: 26 февраля 2010 Рассказать Опубликовано: 26 февраля 2010 (изменено) Тип отправки почты: SMTP К примеру, используем ссылку: /index.php?do=feedback&user=3 Пытаемся отправить сообщение. Вываливается ошибка: Incorrect FROM address: ****@*****.** Проблема кроется в файле: /engine/classes/mail.class.php Строка 183. Сейчас: $this->smtp_send_cmd( "MAIL FROM:" . $this->from ); Нужно: $this->smtp_send_cmd( "MAIL FROM:<" . $this->from . ">" ); И всё начинает работать. ---------------------------- Господа, вы же посылаете команду серверу. Все email адреса до команды DATA посылаются в уголовых скобках < >. RFC5321: http://tools.ietf.org/html/rfc5321 3.3. Mail Transactions ... The first step in the procedure is the MAIL command. MAIL FROM:<reverse-path> [sP <mail-parameters> ] <CRLF> This command tells the SMTP-receiver that a new mail transaction is starting and to reset all its state tables and buffers, including any recipients or mail data. The <reverse-path> portion of the first or only argument contains the source mailbox (between "<" and ">" brackets), which can be used to report errors (see Section 4.2 for a discussion of error reporting). Живой пример: #telnet gmail-smtp-in.l.google.com 25 Trying 209.85.211.98... Connected to gmail-smtp-in.l.google.com. Escape character is '^]'. 220 mx.google.com ESMTP 38si3419991ywh.106 HELO gmail.com 250 mx.google.com at your service Далее используем неверный формат: MAIL FROM: qwerty@gmail.com 555 5.5.2 Syntax error. 38si3419991ywh.106 А теперь верный формат: MAIL FROM:<qwerty@gmail.com> 250 2.1.0 OK 38si3419991ywh.106 quit 221 2.0.0 closing connection 38si3419991ywh.106 Connection closed by foreign host. Автопроверка системы: Версия DataLife Engine: 8.3 Тип лицензии скрипта: Лицензия активирована Режим работы сайта: Включен Операционная система: FreeBSD 5.4-RELEASE Версия PHP: 5.2.8 Версия MySQL: 5.0.67 MySQLi Версия GD: 2.0.34 Module mod_rewrite Включен Безопасный режим: Выключен Выделено оперативной памяти: 256M Отключенные функции: Неопределено Максимальный размер загружаемого файла: 100 Mb Размер свободного места на диске: 147,9 Gb P.S. Если кому будет интересно, чтобы не искать, то как отправлять почту руками через telnet: http://postmaster.info.aol.com/tools/telnet.html Изменено 26 февраля 2010 пользователем Makc666 Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 094 Опубликовано: 26 февраля 2010 Рассказать Опубликовано: 26 февраля 2010 Принято. Спасибо за информацию. Цитата Ссылка на сообщение Поделиться на других сайтах
Makc666 0 Опубликовано: 26 февраля 2010 Рассказать Опубликовано: 26 февраля 2010 (изменено) Автор Короче, оказывается Что $this->from выдает просто адрес вида: qwerty@gmail.com A вот $this->to выдает адрес вида: <qwerty@gmail.com>. Т.е. уже с кавычками. Таким образом получается парадокс: Вот этот код не работает: $this->smtp_send_cmd( "MAIL FROM:" . $this->from ); А аналогичный же код уже работает: $this->smtp_send_cmd( "RCPT TO:" . $to_email ); Поэтому тут нужно думать, что вообще из этого правильно, а что нет. Другими словами, где исправлять данный баг?! Т.е. вставлять ли заплатку, которую я привел в первом сообщении. Или делать так, чтобы $this->from возвращалось с <...> уже. P.S. По коду выше есть строчки, где $this->from берётся в скобки: $this->mail_headers .= "From: \"" . $from . "\" <" . $this->from . ">" . $this->eol; $this->mail_headers .= "Return-Path: <" . $this->from . ">" . $this->eol; Поэтому, если $this->from будет возвращаться с <...>, то из кода вышу нужно их убирать. Изменено 26 февраля 2010 пользователем Makc666 Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 094 Опубликовано: 26 февраля 2010 Рассказать Опубликовано: 26 февраля 2010 Правильное исправление: $this->smtp_send_cmd( "MAIL FROM:" . $this->from ); заменить на $this->smtp_send_cmd( "MAIL FROM:<" . $this->from . ">" ); также $to_arry[] = $bcc; заменить на $to_arry[] = "<".$bcc.">"; Больше ничего трогать не нужно. 1 Цитата Ссылка на сообщение Поделиться на других сайтах
Makc666 0 Опубликовано: 26 февраля 2010 Рассказать Опубликовано: 26 февраля 2010 Автор Больше ничего трогать не нужно. Согласен. Спасибо! Цитата Ссылка на сообщение Поделиться на других сайтах
Makc666 0 Опубликовано: 3 марта 2010 Рассказать Опубликовано: 3 марта 2010 Автор Исправлено в версии 8.5 Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.