/** * */ private function makeInbox($info) { $heads = \Ydin\ArrayKit\Dot::factory($info['headers']); if (false !== strstr($heads('from'), '<')) { // has name $fromName = strip_tags($heads('from')); $fromEmail = trim(strstr($heads('from'), '<'), '<>'); } else { $fromName = ''; $fromEmail = $heads('from'); } if (false !== strstr($heads('to'), '<')) { // has name $toName = strip_tags($heads('to')); $toEmail = trim(strstr($heads('to'), '<'), '<>'); } else { $toName = ''; $toEmail = $heads('to'); } $inbox = new \Inbox(); $inbox->setMessageId($heads('message-id')); $inbox->setReferenceMessageIds($heads('references')); $inbox->setFromEmail($fromEmail); $inbox->setToEmail($toEmail); $inbox->setFromName($fromName); $inbox->setToName($toName); $inbox->setSubject($heads('subject')); $date = $this->timezoneConvert($heads('date'), 'UTC', conf('app.timezone')); $inbox->setEmailCreateTime(strtotime($date)); $inbox->setProperty('googleMessageId', $info['googleMessageId']); $inbox->setProperty('headers', $info['headers']); $inbox->setProperty('data', $info['data']); if ($info['body']) { $inbox->setBodySnippet($info['body']); } /* foreach ($info['data'] as $item) { if ( 'text/plain' === $item['mimeType'] && isset($item['content']) ) { $inbox->setBodySnippet($item['content']); } } */ $referenceMessageIds = $inbox->getReferenceMessageIds(); if (!$referenceMessageIds) { $parentId = 0; } else { $tmp = explode(" ", $referenceMessageIds); $firstReferenceMessageId = $tmp[0]; $inboxes = new \Inboxes(); $theInbox = $inboxes->getInboxByMessageId($firstReferenceMessageId); if ($theInbox) { $parentId = $theInbox->getId(); } else { // 找不到 message id, 這可能是一個大問題 // 但也有可能只是一個小問題 -> 新信件 比 舊信件 先被匯入 // 之後需要想辦法重新串起來 $parentId = -1; } } $inbox->setParentId($parentId); return $inbox; }