[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 次)