Исправление ошибки с поддержкой VERP в PHPMailer

Великая сила пробела

PHPMailer — класс для отправки почты из ; используется многими известными приложениями, в том числе и .

VERP — техника, упрощающая автоматическое определение и удаление email-адресов из списков рассылки, сообщения которым не могут быть доставлены.

Поддержка VERP в хоть и реализована, но не работает.

Следующий лог сессии с SMTP-сервером это демонстрирует:

[-]
View Code Text
Out: 220 example.com ESMTP Postfix
In:  EHLO example.com
Out: 250-example.com
Out: 250-PIPELINING
Out: 250-SIZE 10240000
Out: 250-ETRN
Out: 250-XVERP
Out: 250-ENHANCEDSTATUSCODES
Out: 250-8BITMIME
Out: 250 DSN
In:  MAIL FROM:<mailer@example.com>XVERP
Out: 501 5.1.7 Bad sender address syntax
In:  RSET
Out: 250 2.0.0 Ok

Мы видим, что сервер поддерживает VERP (250-XVERP), но серверу не нравится строка MAIL FROM. И действительно, в ней есть маленькая ошибка: перед XVERP отсутствует пробел.

Добавление пробела исправляет ситуацию:

[-]
View Code Text
220 example.com ESMTP Postfix
EHLO example.com
250-example.com
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-XVERP
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
MAIL FROM:<mailer@example.com> XVERP
250 2.1.0 Ok
RSET
250 2.0.0 Ok
QUIT
221 2.0.0 Bye

Исправление является тривиальным: в файле class.smtp. находим строку

[-]
View Code PHP
$useVerp = ($this->do_verp ? "XVERP" : "");

и заменяем её на

[-]
View Code PHP
$useVerp = ($this->do_verp ? " XVERP" : "");

Для тех, кому проще иметь дело с патчами:

[-]
View Code Diff
--- class.smtp.php
+++ class.smtp.php.new
@@ -604,7 +604,7 @@
       return false;
     }
 
-    $useVerp = ($this->do_verp ? "XVERP" : "");
+    $useVerp = ($this->do_verp ? " XVERP" : "");
     fputs($this->smtp_conn,"MAIL FROM:<" . $from . ">" . $useVerp . $this->CRLF);
 
     $rply = $this->get_lines();

Патч для можно найти здесь.

Добавить в закладки

Связанные записи

Автор: Vladimir; опубликовано в: PHP; метки: PHP, PHPMailer, WordPress, ошибка, патч
2
Фев
2010

RSS Комментарии к статье «Исправление ошибки с поддержкой VERP в PHPMailer»  »

К статье «Исправление ошибки с поддержкой VERP в PHPMailer» комментариев пока нет. Не хотите ли стать первым?

Оставить комментарий к записи «Исправление ошибки с поддержкой VERP в PHPMailer»

Вы должны быть авторизованы, чтобы иметь возможность оставить комментарий.

Подписаться, не комментируя