2009-11-17 4 views
0

Zend Mail генерирует исключение (потому что mail() возвращает false), когда для имени присваивается значение как с внешним символом (например, «å»), так и с запятой («,»,). Повторно создайте код ниже.Задача Zend Mail с чужой char + запятой

$mail = new Zend_Mail('utf-8'); 
$mail 
    ->setFrom('[email protected]', 'My company') 
    ->setSubject('hi') 
    ->addTo('[email protected]', 'aå,a') 
    ->setBodyHtml('<p>asd</p>') 
    ->send(); 

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

->addTo('[email protected]', 'aåa') 
->addTo('[email protected]', 'a,a') 
->addTo('[email protected]', 'aa') 

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

ответ

0

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

User <[email protected]>, Another User <[email protected]> 

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

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

0

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

aå, a <[email protected]> 

С этим заголовком я полагаю, ваш MTA пытается отправить два письма: одно Аа, который выходит из строя (плохо), и второй - [email protected], который должен пробиться. Вы можете попытаться заглянуть в заголовки писем, чтобы подтвердить эту теорию.