2014-07-17 13 views
0

在我問這個問題之前,我確實找到了答案,但是我爲了其他想要知道的人發佈它(和答案,在答案中)如果你有更多的見解,隨時提及它們)。編輯:別人給了一個更好的答案(所以要注意):讓一個Python程序處理mailto鏈接

問:

我做了一個Python程序能夠發送電子郵件。但是,我希望使其能夠成爲默認的電子郵件客戶端,以便在用戶單擊它時捕獲電子郵件地址和HTML電子郵件鏈接主題(郵件鏈接)。

如何獲取電子郵件地址並服從我的客戶?

目前,我可以將我的程序設置爲默認郵件客戶端,但我不知道從Web瀏覽器獲取的信息或信息格式。所以,我不知道如何解析它。

回答

1

假設完整鏈接傳遞在爲sys.argv[1],你需要做的是這樣的:

import urllib.parse 
parsed = urllib.parse.urlparse(sys.argv[1]) 
mail_addr = parsed.path 
fields = urllib.parse.parse_qs(parsed.query) 

這臺mail_addr的地址發送電子郵件,而field將是額外的參數字典。

,你可以期望存在於RFC 6068

+0

非常好的答案。我會用它。既然這個問題也想知道返回給電子郵件程序的格式,我認爲這適合於我提到,當你不僅僅是一個主題時,這些元素將用'&'分隔。 '[email protected]?主題=你好%20again及身體=身體%20text'。 – Shule

+0

另請注意,您的答案確實可以處理%20轉換等問題。 – Shule

+0

爲了便於參考,「密件抄送」和「抄送」是一些更可能的元素。 – Shule

-1

答案是檢查發送到您的程序的參數。實際上有定期的論點。這不是一種特殊的做事方式。 import sys然後使用sys.argv(一個列表)來告訴你什麼是參數。下面是的mailto鏈接返回是什麼格式:

[email protected]?Subject=Hello%20again

所以,它是被放入郵寄地址鏈接標記同樣的事情。你想警惕它如何具有%20而不是空格。要轉換那些普通字符(和其他類似),試試這個(Python的3.4碼):

import urllib.parse 
my_subject=urllib.parse.unquote(mySubjectText).split("=")[1] #the .split("=")[1] gets rid of the unnecessary `subject=` text 

在Python 2.x中,你只需要使用urllib.unquote(mySubjectText)代替urllib.parse.unquote

+1

會發生什麼指定,如果他們使用'body'元素或任何其他的郵寄地址鏈接允許的領域(參見RFC 6068 - HTTP://tools.ietf .org/html/rfc6068) –

+0

感謝您的提示。我不知道有其他元素可用於mailto鏈接。 – Shule

相關問題