2009-12-21 69 views
1

我正在將我的網站與第三方系統進行整合。這裏是我的網站和第三方系統之間的工作流程:使用PHP解析確認電子郵件?

1)從我的網站,我使用PHP自動將CSV文件上傳到第三方系統。

2)第三方系統收到我的文件後,會進行一些操作。

3)第三方系統將通過電子郵件向[email protected]發送包含任何錯誤消息的成功和失敗操作列表。

4)我的網站需要在確認郵件中記錄成功/失敗操作列表。

5)我的網站根據確認郵件中的哪些項目成功/失敗來執行操作。

第一個問題: 需要研究什麼才能實現#4?

第二個問題: 解析確認電子郵件是記錄第三方系統成功/失敗操作的最佳方式嗎?這感覺像是一個步驟5的問題(例如,如果電子郵件中的語言發生變化,那麼我必須重寫解析器)。

回答

2

好吧,顯然更好的方法是從某種程度上推動第三方系統根據定義的參數約定編寫一個腳本 如果有機會這樣做,請與第三方交談,看看這種方式是否能夠以某種方式實現。 。在他們結束

爲了解析電子郵件: 的標準方法在PHP檢查POP3和IMAP郵箱是here

你需要解析什麼電子郵件本身取決於他們的樣子。可能涉及正則表達式。

+1

正如佩卡提到的那樣。一個「腳本在你的最後」,以及關於構建你自己的API的基礎知識的背景研究,請參閱http://www.codewalkers.com/c/a/Miscellaneous/Create-Your-Own-Custom-API/(通過http ://stackoverflow.com/questions/1906255/create-api-using-php) – micahwittman 2009-12-21 16:49:03

1

我已經做了類似的設置。設置郵箱接收來自另一個系統的輸出當然不是最不可行的設置,但有時候沒有其他選項。

Zend_Mail使這輕而易舉。我檢查了郵件收件箱整個劇本是短短的幾行:

$mail = new Zend_Mail_Storage_Imap(array(
     'host' => $config->reports->email->incoming, 
     'user' => $config->reports->email->address, 
     'password' => $config->reports->email->password 
    )); 

    foreach ($mail as $message) { 
     $message->getContent(); // Do something with the message content 
     if ($message->isMultipart()) { 
      $part = $message->getPart(2); // Deal with attachment, 
              // if your output is an 
              // attachment 
      if ($part->contentTransferEncoding=='base64') { 
       $raw = base64_decode($part->getContent()); 
       // Do something with the attachment data 
      } 
     } 
    } 

既然你解析HTML,通過這個開了一個DOM解析器將是下一個合乎邏輯的步驟。

+0

感謝這是一個有用的代碼片段! – John 2009-12-21 18:28:57