/** * Creates Email DTO for the given email message * * @param Message $msg * * @return Email */ public function convertToEmail(Message $msg) { $headers = $msg->getHeaders(); $email = new Email($msg); $email->setId(new ItemId(intval($headers->get('UID')->getFieldValue()), $this->connector->getUidValidity()))->setSubject($this->getString($headers, 'Subject'))->setFrom($this->getString($headers, 'From'))->setSentAt($this->getDateTime($headers, 'Date'))->setReceivedAt($this->getReceivedAt($headers))->setInternalDate($this->getDateTime($headers, 'InternalDate'))->setImportance($this->getImportance($headers))->setMessageId($this->getString($headers, 'Message-ID'))->setXMessageId($this->getString($headers, 'X-GM-MSG-ID'))->setXThreadId($this->getString($headers, 'X-GM-THR-ID')); foreach ($this->getRecipients($headers, 'To') as $val) { $email->addToRecipient($val); } foreach ($this->getRecipients($headers, 'Cc') as $val) { $email->addCcRecipient($val); } foreach ($this->getRecipients($headers, 'Bcc') as $val) { $email->addBccRecipient($val); } return $email; }
/** * Gets UIDVALIDITY of the given folder * * @param EmailFolder|Folder|string $folder * * @return int|null */ public function getUidValidity($folder) { if ($folder instanceof Folder) { $folderName = $folder->getGlobalName(); } elseif ($folder instanceof EmailFolder) { $folderName = $folder->getFullName(); } elseif (is_string($folder)) { $folderName = $folder; } if (!isset($folderName)) { throw new \RuntimeException('Invalid argument passed to getUidValidity method'); } try { $this->connector->selectFolder($folderName); return $this->connector->getUidValidity(); } catch (\Exception $e) { return null; } }
/** * Creates Email DTO for the given email message * * @param Message $msg * * @return Email * * @throws \RuntimeException if the given message cannot be converted to {@see Email} object */ public function convertToEmail(Message $msg) { $headers = $msg->getHeaders(); $email = new Email($msg); try { $email->setId(new ItemId(intval($headers->get('UID')->getFieldValue()), $this->connector->getUidValidity()))->setSubject($this->getString($headers, 'Subject'))->setFrom($this->getString($headers, 'From'))->setSentAt($this->getDateTime($headers, 'Date'))->setReceivedAt($this->getReceivedAt($headers))->setInternalDate($this->getDateTime($headers, 'InternalDate'))->setImportance($this->getImportance($headers))->setRefs($this->getReferences($headers, 'References'))->setXMessageId($this->getString($headers, 'X-GM-MSG-ID'))->setXThreadId($this->getString($headers, 'X-GM-THR-ID'))->setMessageId($this->getMessageId($headers, 'Message-ID'))->setMultiMessageId($this->getMultiMessageId($headers, 'Message-ID'))->setAcceptLanguageHeader($this->getAcceptLanguageHeader($headers)); foreach ($this->getRecipients($headers, 'To') as $val) { $email->addToRecipient($val); } foreach ($this->getRecipients($headers, 'Cc') as $val) { $email->addCcRecipient($val); } foreach ($this->getRecipients($headers, 'Bcc') as $val) { $email->addBccRecipient($val); } return $email; } catch (\Exception $e) { throw new \RuntimeException(sprintf('Cannot parse email message. Subject: %s. Error: %s', $email->getSubject(), $e->getMessage()), 0, $e); } }