Проблема Zend Mail с иностранным символом + запятая - PullRequest
0 голосов
/ 17 ноября 2009

Zend Mail выдает исключение (потому что mail () возвращает false), когда для имени to присваивается что-то с внешним символом (например, "å") и запятой (","). Воспроизведите с кодом ниже.

$mail = new Zend_Mail('utf-8');
$mail
    ->setFrom('info@myhost', 'My company')
    ->setSubject('hi')
    ->addTo('MYEMAIL@SOMEHOST.COM', 'aå,a')
    ->setBodyHtml('<p>asd</p>')
    ->send();

Если я изменю вызов addTo на что-то из нижеперечисленного, ошибки не будет.

->addTo('znarkus@gmail.com', 'aåa')
->addTo('znarkus@gmail.com', 'a,a')
->addTo('znarkus@gmail.com', 'aa')

Странная вещь, даже если она выдает исключение («Невозможно отправить почту»), почта доставлена ​​. Я использую последнюю версию Zend Mail (1.9.5?). Пожалуйста, помогите!

Ответы [ 3 ]

1 голос
/ 02 марта 2011

Это просто ошибка в Zend_Framework:

http://framework.zend.com/issues/browse/ZF-10792

допускается запятая в именной части письма:

"Смит, Фрэнк"

это нормально

0 голосов
/ 17 ноября 2009

Запятая является зарезервированным литералом в части «to» почтового заголовка (и вы никогда не должны его использовать), разделяя разные цели. Даже если ваше «первое» письмо отправлено, imho создает такой заголовок:

aå, a <znarkus@gmail.com>

С этим заголовком я предполагаю, что ваш mta пытается отправить две почты: одну на aå, которая терпит неудачу (плохо), и другую на znarkus@gmail.com, которая должна пробиться. Вы можете попробовать заглянуть в заголовки почты, чтобы подтвердить эту теорию.

0 голосов
/ 17 ноября 2009

Проблема в том, что функция mail () для $ принимает

User <user@example.com>, Another User <anotheruser@example.com>

и я предполагаю, что PHP внутренне разбивает строку на запятые, чтобы разделить несколько получателей, но вы предоставляете только один адрес электронной почты.

Если вы считаете, что это ошибка Zend_Mail или PHP, вы должны опубликовать это в соответствующем трекере.

...