Google Apps Script - GMail Inline Image

最近剛好有需求要做Mail Parser,主要是需要把Mail附件拿來做些處理,Google Apps Script其實在這部份已經做的很棒,詳細可以查詢GmailApp,其中Inbox對於Gmail來說就像是個郵件盒,每個郵件盒中有很多的郵件(GmailMessage),每封郵件內可能還會夾帶著附件(GmailAttachment),相同一系列的郵件(就是一直Re: Fwd:)這些郵件會變為一個郵件串(GmailThread),你可以針對每一個郵件串(GmailThread)貼上標籤(GmailLabel)來分類,這就是在Google Apps Script中所分的幾個大分類。

  • GmailApp:Gmail
  • Inbox:Gmail 的Inbox
  • GmailThread:郵件串
  • GmailLabel:郵件串的標籤
  • GmailMessage:郵件
  • GmailAttachment:郵件附件

對於基本的GMail該有的功能幾乎是都有了,但對於Inline Image似乎沒有辦法取得,既不在Mail body也不在attachment中,但這圖片確實可以出現在Gmail中,從Mail Body只會取得一個連結,但這連結必須要Google login session才可以拿到,在Google apple script沒辦法直接用curl來login,所以開始了找尋新的一條路...最後發現在RawContent中其實有夾帶著Inline Image,是用base64 encode的binary,重點就是要把這些Parse出來decode轉成blob,就可以自由的使用,但在parse過程中遇到很多問題,現在的Mail server種類很多,Mail client更是多...每一個上傳過來的多少都有點落差,在這邊判斷這東西實在很麻煩,所以目前採用了一種方式解決,把所有收到的Email 再轉寄到另一個Gmail,這樣就可以保證收到的Mail全部都是Google 格式,也因此parse只要寫一種(GMail)即可。

如果有興趣使用可以直接Import,project key「MexeYVcutPEfH4PE_lTdUTQ1vcfzwSFZI

使用方式 sample
//只要使用下面這行就會回傳inline image的Array(blob array)
Mail.getGmailInlineAttachments(gmailMessage)


相關連結
source code - https://script.google.com/d/1S9W3czqvmbE20rXUMrZogPz3ij54CudfU7ugIVAKmTU0-U9Nw2k4xNFH/edit
Google Apps Script Gmail - https://developers.google.com/apps-script/service_gmail

沒有留言:

張貼留言