0
Как узнать, сколько вложений имеется в сообщении?Zend_Mail_Part: Получить количество вложений
Этот метод надежный?
$attachments = 0;
$msg = $mail->getMessage($msgno);
if($msg->isMultipart()){
$parts = $msg->countParts();
for($i=1; $i<=$parts; $i++){
$part = $msg->getPart($i);
try {
if(strpos($part->contentType,'text/html')===false && strpos($part->contentType,'text/plain')===false)
$attachments++;
} catch (Zend_Mail_Exception $e) {}
}
}
или этот?
$matches = array();
$pattern = '`Content-Disposition: (?!inline)(.*)[\s]*filename=`';
$attachments = (string) preg_match_all($pattern, $storage->getRawContent($msgno), $matches);
Zend_Mail_Message :: getParts не существует. Как насчет второго метода в моем ответе? – AHHP
'Zend_Mail' распространяется непосредственно из' Zend_Mime_Message', который имеет 'getParts()', поэтому 'Zend_Mail' наследует его. Я просто протестировал этот метод, и он сработал. В приведенном выше примере '$ msg' должен быть объектом Zend_Mail. Я не уверен, что делает '$ mail-> getMessage', но, возможно, вы можете пропустить это, если' $ mail' - ваш объект Zend_Mail. Получение необработанного тела сообщения может быть не лучшей идеей, если сообщение велико или имеет большие вложения. Посмотрите, можете ли вы заставить этот метод работать. Если не дать мне больше информации о переменных, или я могу опубликовать пример в другом контексте. – drew010
Я использовал его, и исключение приходит как это 'exception 'Zend_Mail_Exception' с сообщением 'no Header with Name disposition or disposition found' 'также мой объект $ msg' из' Zend_Mail_Storage_Imap', так что я должен делать? –