2009-10-27 39 views
4

我有鏈接生成的web應用程序。我想讓用戶可以通過電子郵件將他們創建的鏈接通過Gmail,雅虎郵件等方式發送給他人。雅虎郵件有一個特別的問題,我需要一個解決方法。在雅虎郵件編碼鏈接的URI編碼

如果你有一個雅虎郵件帳戶,請點擊此鏈接:

http://compose.mail.yahoo.com/?body=http%3A%2F%2Flocalhost%3A8000%2Fpath%23anchor

注意,雅虎重定向到一個指定的郵件服務器(例如http://us.mc431.mail.yahoo.com/mc/compose)。像它一樣,它解碼十六進制代碼。其中之一,%23,是一個散列符號,在查詢字符串參數值中不合法。 %23之後的所有信息都已丟失。

我所有的鏈接都壞了,只是使用另一個字符不是一個選項。

調用us.mc431.yahoo.com直接爲我工作,但可能不適合所有用戶,具體取決於他們的位置。

我試過設置html = true | false,把網址放在html標記中。什麼都沒有任何人都有可靠的解決方法來解決這個特別的問題嗎?

注意:任何基於服務器的解決方法對我來說都是不起作用的。這必須是雅虎和最終用戶之間的鏈接。

感謝

回答

1

我認爲你是在什麼樣雅虎的服務器做時,它會發出HTTP重定向擺佈。它似乎是應該保留重定向URL轉義,但不是。但是,如果不知道其基礎應用程序,很難說爲什麼它不會。也許,這只是一個意想不到的副作用(或錯誤),或者該頁面上的某些Javascript功能要求他們使用哈希標記進行一些討論。

3

過去幾個小時我一直在處理同樣的問題,我找到了解決方法!

如果您對錨點進行雙重編碼,它將被Yahoo正確解釋。這意味着將%23更改爲%2523(百分號是%25編碼)。

所以你的URI將是:
http://compose.mail.yahoo.com/?body=http%3A%2F%2Flocalhost%3A8000%2Fpath%2523anchor

相同的解決方法可用於符號。如果您只將其編碼爲%26,那麼Yahoo會將其轉換爲「& amp;」這將丟棄其餘的消息。與上述步驟相同 - 將%26更改爲%2526。

儘管(%0D和%0A)我仍然沒有找到解決新行問題的方法。

+1

%25和%23的組合爲我工作:'http://example.com?foo =%25&bar = http:// example.com /%23/baz' – 2014-09-23 02:29:44

3

對於新行,添加換行符爲< BR>和雙編碼也行,它成功地解釋爲新的生產線在新郵件

+1

這不再起作用。 – 2014-01-22 21:00:33

4

這是我如何做到這一點:

  1. 運行這些字符一個window.escape& ' " # > < \

  2. 上滿弦運行一個encodeURIComponent

它適用於我的大部分情況。儘管換行符(\n)仍然是一個問題,但是我用空格替換了\ n,並且它工作正常。