Перейти к публикации

Incorrect FROM address: ****@***** (MAIL FROM: <...>)


Рекомендованные сообщения

Тип отправки почты: 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

Изменено пользователем Makc666
Ссылка на сообщение
Поделиться на других сайтах

Короче, оказывается :)

Что $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 будет возвращаться с <...>, то из кода вышу нужно их убирать.

Изменено пользователем Makc666
Ссылка на сообщение
Поделиться на других сайтах

Правильное исправление:

$this->smtp_send_cmd( "MAIL FROM:" . $this->from );
заменить на
$this->smtp_send_cmd( "MAIL FROM:<" . $this->from . ">" );
также
$to_arry[] = $bcc;
заменить на
$to_arry[] = "<".$bcc.">";

Больше ничего трогать не нужно.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...