2010-04-06 305 views
9

嗨,大家好,我發現,爲了打開Gmail撰寫屏幕你必須先登錄並打開以下鏈接:預填Gmail撰寫屏幕,HTML文本

https://mail.google.com/a/domain/?view=cm&fs=1&tf=1&source=mailto&to=WHOEVER%40COMPANY.COM&su=SUBJECTHERE&cc=WHOEVER%40COMPANY.COM&bcc=WHOEVER%40COMPANY.COM&body=PREPOPULATEDBODY

更換變量填寫表格中的相應位置。但是,如果我想進入身體多行文本或換行符,即使我urlencode它只是不工作。這裏的任何想法?

+0

當你進行網址編碼時,你用什麼換行符?爲什麼不使用標準的'mailto:'URI方案? ('href =「mailto:[email protected]?subject = SubjectHere」') – Anthony 2010-04-06 10:14:48

+0

基本上這個鏈接打開gmail撰寫屏幕 - 我試過urlencoding換行符以及html中斷,但它沒有工作:( - 它爲谷歌基於應用的項目 – Ali 2010-04-06 11:10:22

+0

糾正了問題中提供的鏈接,因爲所提供的鏈接轉到服務器錯誤頁面,可能對其他人有幫助。 https://mail.google.com/?view=cm&fs=1&tf=1&source=mailto&to= WHOEVER%40COMPANY.COM&su = SUBJECTHERE&cc = WHOEVER%40COMPANY.COM&bcc = WHOEVER%40COMPANY.COM&body = PREPOPULATEDBODY – 2013-06-29 05:46:02

回答

11

檢查您的UrlEncode方法是否真的將換行符轉換爲「%0a」。這裏的一個2行電子郵件主體的一個示例:

https://mail.google.com/mail/?view=cm&ui=2&tf=0&fs=1&to=WHOEVER%40COMPANY.COM&su=SUBJECTHERE&body=LINE1%0aLINE2

+2

謝謝你解決它很好,但現在我有太多的文字的另一個問題 - http://stackoverflow.com/questions/2590467/prefilling-large-volumes-of-body-text-in-gmail-compose-getting -一個-request-uri-too – Ali 2010-04-07 06:40:01

+1

撰寫網址的工作真的很棒:)。謝謝。有沒有什麼辦法可以打開郵件窗口,就好像它的回覆或轉發一樣?這樣用戶可以直接轉發或回覆電子郵件。 – 2014-07-29 03:59:52

+0

@Kartik找到任何解決方案? – 2015-10-04 02:31:08

2

我用標準JavaScript encodeURIComponent方法(),用於對多體。有效。

那些誰也想預填充通用的Gmail,而不是應用程序域特定帳戶,使用這個網址來代替:

https://mail.google.com/?view=cm&fs=1&tf=1& ....

8

的Gmail有什麼HTML5的registerProtocolHandler()發出支持。

例子:

var compose = "https://mail.google.com/mail/?extsrc=mailto&url=" + encodeURIComponent("mailto:?subject=test"); 

這就是Gmail的希望您使用。當然,修改特定於領域的撰寫URI的開始。

但是,它會自行加載組合表單(未與收件箱頁面集成)。所以,如果你想融入收件箱頁面的撰寫格式,則需要負荷:

"https://mail.google.com/mail/?compose=1&view=cm&fs=1&to=1&su=2&body=3&cc=4&bcc=5" 

代替。但是,這要求您首先解析mailto URI以獲取hfvalues並修復它們的百分比編碼以確保它們適合發送HTTP URI。請參閱下面的更多信息。

現在,Gmail對HTML5撰寫URI所做的工作是百分比解碼url參數以獲取mailto URI。然後,它解析mailto URI以獲取hfvalues。然後,它使用這些hfvalue來構建一個像收件箱集成的URI並將您重定向到它。

Gmail的HTML5方法存在的問題是,它不會將hfvalue中的'+'字符百分比編碼爲「%2B」。最終的結果是,mailto URI中的'+'字符(它們不是mailto URI中的空格)以Gmail撰寫形式中的空格出現。

要解決Gmail的錯誤,你只是做:

var compose = "https://mail.google.com/mail/?extsrc=mailto&url=" + encodeURIComponent("mailto:?subject=test".replace(/\+/g, "%2B")); 

代替。

這個錯誤在很多年前就有報道,但Gmail拒絕修復它。你也應該看到,對於收件箱集成的組合URI,如果你有mailto URI「mailto:?subject = 1 + 2」,你需要確保你發送了su = 1%2B2組成URI而不是su = 1 + 2。後者將導致在主題字段中的空格而不是「+」。這部分不是Gmail的錯誤。這就是HTTP的工作原理。

你可以看到my Gmail Compose Extension for Opera(解壓縮)的來源,看看我如何做HTML5的方式。這很簡單。但是,它不包含+到%2B的解決方法。

但是,您可以看到我正在測試的the newer version of the extension(只需要有人在首選項中測試特定於域的選項)以進行更高級的處理。這個使用my custom, generic mailto URI parser來規範mailto URI和它的hfvalues來處理'+'大小寫,不安全的字符和重複的hfvalues。它還提供了一個選項來選擇是否要使用HTML5撰寫URI。

你也可以看看this User JS script for Opera如何做事情。

對於前面提到的重複hfvalue問題以及其他mailto URI內容,請參閱my mailto URI spec,其用於RFC6068的研究和反饋。

注意:僅僅因爲Gmail用戶啓用了豐富的文本編輯功能,這並不意味着Gmail將接受撰寫URI中的HTML標記並將其視爲同樣的內容。它都被解釋爲文本。

+0

很好的解釋。太糟糕了,這不能被追溯性地接受爲答案。 – Palpatim 2012-09-05 21:21:58

+0

您是否知道是否可以將[email protected]與這些網址結合起來,以便選擇另一個GMail帳戶? – oodavid 2014-04-10 09:50:25

+0

@oodavid我不知道*,但我認爲不是,並假設它是由cookie完成的。 – Shadow2531 2014-04-11 05:54:48

1

目前(2014年2月),以預填充撰寫屏幕,並學科領域,用途:

https://mail.google.com/mail/?&v=b&cs=wh&[email protected]&subject=subject%20goes%20here 

注:cs=wh是顯著,爲撰寫超鏈接使用cs=b,不自動填充。

+0

這適用於我。 – 2015-01-22 15:19:18

0

另一個限制是GET請求被限制到一定數量的字符,因此嘗試使用MAILTO + GET params方法將不適用於較大的內容。有沒有人找到另一種方式通過某種Web請求將更大的內容推送到新的Compose窗口?

從我可以告訴這將是困難的,因爲mailto實際上是一個瀏覽器動作正確嗎?

0

感謝您的提示。其他回覆中尚未指定的一件事是,如果您使用多個帳戶(如個人帳戶和專業帳戶)登錄到Gmail,則使用https://mail.google.com/a/domain.com/而不是https://mail.google.com/mail/可以指定要使用哪個郵箱發送消息。否則,Gmail會首先加載您登錄的帳戶。