[Cordova] 使用 mailto: 網址,產生指定標題與內容的電子郵件

[Cordova] 使用 mailto: 網址,產生指定標題與內容的電子郵件

之前寫過一篇 使用 mailto: 連結產生電子郵件內容範本 (template)

那時是想要利用 mailto 產生電子郵件內容後,傳回 App 的除錯資訊,

不過後來因為我把除錯資訊整個直接放在郵件裡,

導致郵件產生需要非常久的時間,所以作罷。

 

最近還是把這除錯資訊的功能做好了,

改成將除錯資訊先上傳到一個地方,

郵件裡就只放一個連結,就不會有產生郵件很久的問題。

 

不過,當使用者在 App 裡點下按鈕,

我用下面的方法要產生郵件時,卻無法成功:

window.open("mailto:someone@somewhere.com?subject=email_subject");

 

看起來 Cordova 會試著在原本的 WebView 元件裡,打開這個連結,

但 WebView 似乎不支援這種 mailto: 的 URL…

上網找了一下,最後試出來下面的步驟是必須的:

 

1. Cordova 的 config.xml 裡要有下面兩行

<access launch-external="true" origin="mailto:*" />
<allow-intent href="mailto:*" />

2. 安裝 Cordova plugin cordova-plugin-whitelist

cordova plugin add cordova-plugin-whitelist

 

3. 使用 window.location 指定 mailto:

這大概是最重要的步驟了,

因為不管是 window.open() 或是 cordova.InAppBrowser.open(),

都沒辦法成功打開 mailto: 網址。

但是使用 window.location 就可以:

window.location = "mailto:someone@somewhere.com?subject=email_subject";

 

這樣就能呼叫出手機預設的電子郵件 App (像我的是 Gmail),

來產生出指定標題與內容的郵件囉~

 

參考資料:mailto: links not opening mail app on Android in cordova app – Stack Overflow

(本頁面已被瀏覽過 389 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料