2014-09-05 10 views
1

我有一個非常老的rails應用程序試圖向新用戶發送驗證郵件,但永遠不會找到該標記,因爲由於某種原因鏈接無論如何獲得3D預先添加到字符串我生成鏈接。由於某種原因,它似乎也正在向標記的中間注入=號。Rails 2郵件程序視圖預先填充3D到字符串

下面是一些代碼輸出:

<%= link_to verify_account_url(:host => (ActionMailer::Base.default_url_options[:host] || ''), :t => @token), verify_account_url(:host => (ActionMailer::Base.default_url_options[:host] || ''), :t => @token) %> 

<a href=3D"https://localhost:3000/accounts/verify?t=3Dd486da2ac8a6dea8a3d9ce341c7aa6= 
b01cca96ea">https://localhost:3000/accounts/verify?t=3Dd486da2ac8a6dea8a3d9ce341c7aa6b0= 
1cca96ea</a> 

,並在數據庫中的令牌是:

#<AccountToken id: 6317, token: "d486da2ac8a6dea8a3d9ce341c7aa6b01cca96ea", email: "...", client: nil> 

我也嘗試了硬編碼的URL和插在字符串輸出的標記,但同樣的問題正在發生,它似乎也發生在正常的HTML標籤中,例如:

<p style="margin: 0 0 1em;">If clicking the link doesn't work, copy and paste the link into your browser's address bar.</p> 

結果於

<p style=3D"margin: 0 0 1em;">If clicking the link doesn't work, copy a=nd paste the link into your browser's address bar.</p> 

任何人有什麼想法?

回答

2

這是正常現象。爲了讓電子郵件順利通過可能只支持7位ASCII碼的傳統系統,電子郵件通常使用各種方案進行編碼,將所有內容都轉換爲7位ASCII格式。

一個這樣的方案被稱爲quoted-printable,在該方案中,使用=後跟十六進制字節值(基本上與urls中的%編碼相同)編碼特殊字符。該方案的一部分是,行必須不超過76個字符 - 如果一行較長,則會插入一個回車符,以及一個=,以便可以將這些行與源文檔中存在的換行符區分開來。

當電子郵件被郵件客戶端讀取時,那些額外的=和線路返回將不再存在。

+0

啊我想這是從我的開發日誌閱讀我的郵件的問題。謝謝 – Jimmy 2014-09-05 16:01:13