2012-05-08 29 views
1

我有一個Web應用程序,我正在嘗試針對移動設備進行優化,而我的直接mailto功能不適用於我的Android手機上的默認郵件客戶端。它適用於Gmail客戶端,但不適用於與Exchange電子郵件集成的本地郵件客戶端。 (它似乎也適用於iphones fwiw。)本地客戶端發生的事情是,回車後的所有內容都被切斷。所以說我有類似如下:我的mailto鏈接中的換行符在Android手機上被打破

sendLinkByEmail: function (subject, message, url) 
    { 
     var parsedMessage = encodeURIComponent("Isn't this cool?\n I am sending you an email!"); 
     var emailLink = "mailto:?Subject=" + encodeURIComponent(subject) + "&body=" + parsedMessage; 
     window.location = emailLink; 
     return false; 
    } 

如果我選擇與Gmail應用程序打開,我看到預期的結果:

這是不是很酷?

我給你發了一封電子郵件!

但是,如果我與郵件應用程序中打開它,我只是得到

這是不是很酷?

就是這樣。

如果不是\ n我使用%0A或%0D%0A,或者如果我不使用encodeURIComponent(例如,消息只是字面上的「Foo%0D%0ABar」 - 我只是得到Foo) 。

我無法弄清楚那個愚蠢的郵件客戶端在做什麼!任何人有任何想法?

非常感謝!


剛剛意識到我的問題就更大了 - 魯鈍的郵件客戶端也截斷後甚至任何一個編碼&(26%),所以我不能嵌入URL或者,這是函數的整點。

從mail應用程序打開郵件客戶端有沒有其他選擇mailto?

+0

我想我正在跳過Bug 8023. Grr。 http://code.google.com/p/android/issues/detail?id=8023 –

回答

0

根據我的經驗,在mailto:鏈接中\ n的成功將因郵件客戶端到郵件客戶端而異。我發現最好的工作是使用%0d代替\ n,但即便如此,並非所有的客戶端都會支持它。

如果格式對你很重要,那麼mailto:鏈接就不是你想要的。

+0

感謝您的回覆(但令人失望的事實!)我不介意格式沒有出現在所有客戶端上,但是如果將信息的結尾切斷是不可接受的。所以我必須刪除所有客戶端的格式,儘管大多數人都可以處理換行符。該死。因此,如果郵件鏈接不是我想要的,我可以通過* webapp *(不是本機)來打開電話上的電子郵件客戶端? –

+0

不幸的是,如果你的目標是打開一個本地郵件客戶端,mailto:鏈接是你唯一的選擇。否則,您可以使用自己的郵件實施發送內容,但顯然用戶無法訪問其本地通訊簿。足以說,這是實施的一個缺點。 –