0x00 前言在之前的文章《Zimbra SOAP API开发指南》 和《Zimbra-SOAP-API开发指南2》 介紹了Zimbra SOAP API的調用方法,開源代碼Zimbra_SOAP_API_Manage。 本文將要在此基礎上擴充功能,添加郵件操作的相關功能。
0x01 簡介本文將要介紹以下內容:
查看郵件
發送郵件
刪除郵件
0x02 查看郵件Zimbra SOAP API說明文檔:https://files.zimbra.com/docs/soap_api/9.0.0/api-reference/index.html
結合Zimbra SOAP API說明文檔和調試結果得出以下實現流程:
調用Search命令獲得郵件對應的Item id,通過Item id作為郵件的識別標誌。
獲得Item id後可以對郵件做進一步操作,如查看郵件細節、移動郵件、刪除郵件等。
1.獲得郵件對應的Item id需要使用Search命令。
說明文檔:https://files.zimbra.com/docs/soap_api/8.8.15/api-reference/zimbraMail/Search.html
需要用到以下參數:
(1)query
表示查看的位置,示例如下:
(2)limit
表示返回的查詢結果數量,示例如下:
如果不指定該屬性,默認為10
測試代碼:
返回內容示例:
對以上格式分析,發現標籤c***對應每個郵件的信息,提取數據如下:
格式分析如下:
時間格式轉換的示例代碼:
綜合以上內容,得出提取Item id、發件人、標題、正文內容和發送時間的實現代碼:
2.查看郵件內容測試發現,查看郵件細節可以不依賴Zimbra SOAP API,訪問固定url即可。
通過這種方式可以獲得完整的郵件內容,包括Base64編碼的附件內容。
實現代碼:
0x03 發送郵件在發送帶有附件的郵件時,需要先上傳附件,再發送。
1.上傳附件上傳功能通過FileUploadServlet實現,對應代碼位置:/opt/zimbra/lib/jars/zimbrastore.jar中/com.zimbra/cs/service/FileUploadServlet.class
上傳細節可參考:https://github.com/Zimbra/zm-mailbox/blob/develop/store/docs/file-upload.txt
上傳的url: https://
如果添加參數fmt=raw,extended,返回結果示例:
經過比較,發現添加參數fmt=raw,extended能夠額外獲得文件類型,示例:'ct':'image/jpeg'
所以在上傳時,使用url: https://url /service/upload?fmt=raw,extended
綜合以上內容,得出以下實現代碼:
2.發送帶有附件的郵件需要使用SendMsg命令。
說明文檔:https://files.zimbra.com/docs/soap_api/8.8.15/api-reference/zimbraMail/SendMsg.html
需要用到以下參數:
(1)e
表示發件人和收件人等相關信息,示例如下:
(2)su
表示郵件標題,示例如下:
(3)mp
表示正文內容,示例如下:
(4)noSave
如果設置為1,表示郵件發送後,不在發件箱保存副本,示例代碼:
(5)attach
指定發送附件的aid,示例代碼:
綜合以上內容,得出發送帶有附件郵件的實現代碼:
0x04 刪除郵件需要使用ConvAction命令。
說明文檔:https://files.zimbra.com/docs/soap_api/8.8.15/api-reference/zimbraMail/ConvAction.html
需要用到以下參數:
(1)tcon
通過瀏覽器刪除郵件的流程是先點擊刪除郵件,將郵件移動至垃圾箱,再從垃圾箱中點擊刪除郵件,完成郵件的徹底刪除。
通過Zimbra-SOAP-API可以簡化以上流程,直接刪除郵件。
實現代碼:
0x05 開源代碼新的代碼已上傳至github,地址如下:
https://github.com/3gstudent/Homework-of-Python/blob/master/Zimbra_SOAP_API_Manage.py
優化了代碼結構,增加了以下功能:
DeleteMail,刪除指定郵件
SearchMail,獲得郵箱信息,包括Item id、發件人、標題、正文內容和發送時間
SendTestMailToSelf,向當前郵箱發送一封帶有附件的郵件
uploadattachment,上傳附件
uploadattachmentraw,上傳附件的另一種實現,用於特定條件
viewmail,查看郵件完整細節
0x06 小結本文擴充了Zimbra SOAP API的調用方法,添加三個實用功能:查看郵件、發送郵件和刪除郵件,記錄實現細節。
Recommended Comments