예제 #1
0
 public function testGetHeaderFieldInvalid()
 {
     $message = new Message(array('file' => $this->_file));
     try {
         $message->getHeaderField('fake-header-name', 'foo');
     } catch (MailException\ExceptionInterface $e) {
         return;
     }
     $this->fail('No exception thrown while requesting invalid field name');
 }
예제 #2
0
 /**
  * convert raw mail to common array format.
  *
  * @param ReceiveMessage $rawMail
  *
  * common mail array format
  *
  * @return null|MailPart
  */
 private function parseMailParts(ReceiveMessage $rawMail)
 {
     $rawMailHeaders = $rawMail->getHeaders();
     $contentType = isset($rawMail->content_type) ? $rawMail->getHeaderField('Content-Type') : 'no_content_type';
     $part = $this->configurePart($contentType);
     if (is_null($part)) {
         //            prn('first');
         return $part;
     }
     if ($rawMail->isMultipart()) {
         $partResult = [];
         try {
             foreach ($rawMail as $rawPart) {
                 //                    prn($rawPart);
                 $tres = $this->parseMailParts($rawPart);
                 //                    prn($tres);
                 if (!isset($tres)) {
                     continue;
                 }
                 $partResult[] = $tres;
             }
         } catch (\Zend\Mail\Header\Exception\InvalidArgumentException $exc) {
             //                prn($exc->getMessage());
         }
         //            prn($partResult);
         $part->setContent($partResult);
         $part->setHeaders($rawMailHeaders);
     } else {
         $isAttachment = in_array(explode('/', $contentType)[0], $this::$attachmentTypes);
         $partResult = $rawMail->getContent();
         if (in_array('Content-Transfer-Encoding', array_keys($rawMailHeaders->toArray())) && isset($partResult)) {
             $partResult = $this->decode($partResult, $rawMail->contentTransferEncoding);
             $rawMailHeaders->removeHeader('Content-Transfer-Encoding');
         }
         if ($isAttachment) {
             switch ($this->attachmentProcessingType) {
                 case self::AttachmentNone:
                     //                        prn('second');
                     return null;
                     break;
                 case self::AttachmentInfo:
                     $partResult = null;
                     break;
                 case self::AttachmentFiles:
                     break;
             }
         } else {
             try {
                 $mailCharset = $rawMail->getHeaderField('content-type', 'charset');
             } catch (\Exception $ex) {
                 $mailCharset = null;
             }
             $partResult = $this->setMailEncoding($partResult, $mailCharset);
         }
     }
     $part->setContent($partResult);
     $part->setHeaders($rawMailHeaders);
     //        prn('third');
     return $part;
 }