發送到應用程式的電子郵件是含 MIME 資料的 HTTP 要求。如要處理內送電子郵件,請將電子郵件地址與應用程式設定中的指令碼處理常式建立關聯,然後將處理常式加在應用程式的程式碼中。
內送電子郵件會產生 HTTP 要求,系統會將這些要求傳遞到適當的指令碼。您的預設服務必須要有處理內收電子郵件的指令碼。
如需進一步瞭解郵件服務,請參閱郵件 API 總覽。
設定以應用程式接收電子郵件
建立新應用程式時,預設會停用內送電子郵件。如要啟用內送電子郵件,您必須在預設服務中修改 app.yaml
檔案。
新增一個會啟用內送電子郵件服務的
inbound_services
區段。例如:若未在設定檔中新增這個區段,以利啟用內送電子郵件, 就會停用內送電子郵件功能,因此會忽略發送至應用程式的電子郵件。
新增對應,為網址對應的電子郵件地址與指令碼處理常式建立關聯。
對於預設服務,收件電子郵件地址的格式如下:
[STRING]@[Google Cloud project ID].appspotmail.com
非預設服務的電子郵件地址格式如下:
[STRING]@[servicename]-dot-[Google Cloud project ID].appspotmail.com
電子郵件會透過下列網址以 HTTP POST 要求傳送至應用程式,其中 [ADDRESS] 是完整的電子郵件地址,包括網域名稱:
/_ah/mail/[ADDRESS]
如要在應用程式中處理傳入的電子郵件,請在
app.yaml
檔案中將電子郵件網址對應至處理程序:在上例中,
/_ah/mail/.+
會比對所有寄給應用程式的電子郵件地址。如果您願意,可以為不同的電子郵件地址設定多個處理常式,如以下範例所示:系統將根據此清單,從頭到尾一一比對內送電子郵件的網址; 如果電子郵件網址符合一個以上的格式, 系統會執行第一個相符的處理常式。這樣您所加入的最後一個對應項目就可以是「catchall」。處理常式會在預設模組 (或應用程式版本) 中執行。
處理傳入電子郵件
Python SDK 定義了 InboundMailHandler
,這是用於處理傳入電子郵件的網頁應用程式類別。InboundMailHandler
位於 google.appengine.ext.webapp.mail_handlers
套件中。
如何使用 InboundMailHandler
:
- 請建立
InboundMailHandler
的子類別,並覆寫receive()
方法。 - 使用類別
InboundEmailMessage
的引數呼叫receive()
方法 (這是以 Python SDK 定義的)。
例如,您可以建立 InboundEmailMessage
的例項,如下所示:
InboundMailHandler
包含 mapping()
便利類別方法,可傳回與郵件處理常式比對的所有傳入電子郵件地址組合,當然,您也可以在程式碼中任何 InboundMailHandler
的子類別上呼叫此方法:
InboundEmailMessage
物件 (在本例中為 mail_message
) 包含電子郵件訊息。其 bodies()
方法會傳回訊息內的文本。如果您在沒有引數的情況下呼叫 bodies()
,系統會傳回一個迭代器,該迭代器會先產生 HTML 主體,然後再產生純文字主體。如果您只想要 HTML 或純文字,可以將引數傳遞至 bodies()
:
InboundEmailMessage
物件包含存取其他訊息欄位的屬性:
subject
包含郵件主旨。sender
是寄件人的地址,例如"Nobody <[email protected]>"
。to
是逗號分隔的清單,內容註明電子郵件主要收件人,例如"Joe <[email protected]>, Bill <[email protected]>"
。cc
包含一個逗號分隔的清單,內容註明副本收件人,例如"Joe <[email protected]>, Bill <[email protected]>"
。date
會傳回郵件日期。attachments
是Attachment
物件的清單,可能沒有內容。original
是完整電子郵件,內容包括其他欄位沒有顯示的資料,例如電子郵件的標頭,如 Pythonemail.message.Message
。
使用本機開發伺服器模擬內送電子郵件
設定好處理內送電子郵件的應用程式之後, 就可以使用開發伺服器主控台模擬內送電子郵件:
- 至 http://localhost:8080/console 選取「Sign in as administrator」,以管理員身分存取開發伺服器。
- 在開發伺服器的導航介面中按一下 [傳入的郵件]。
填妥出現的表單,然後按一下 [傳送電子郵件]。
如需詳細資訊,包括如何執行開發伺服器,請參閱 Python 開發伺服器。