我正嘗試從GMail帳戶發送和接收已知結構的郵件,而無需用戶干預。如何從Firefox擴展連接到郵件服務器?
有沒有一種優雅的方式可以通過Firefox擴展來創建IMAP和SMTP連接,而不會因涉及C++或Python而導致過度複雜化?
我正嘗試從GMail帳戶發送和接收已知結構的郵件,而無需用戶干預。如何從Firefox擴展連接到郵件服務器?
有沒有一種優雅的方式可以通過Firefox擴展來創建IMAP和SMTP連接,而不會因涉及C++或Python而導致過度複雜化?
你必須使用nsISocketTransportService.createTransport()打開一個連接,這樣的:
var Cc = Components.classes;
var Ci = Components.interfaces;
var socket = Cc["@mozilla.org/network/socket-transport-service;1"]
.getService(Ci.nsISocketTransportService)
.createTransport(["ssl"], 1, "pop.gmail.com", 995, null);
var input = socket.openInputStream(Ci.nsITransport.OPEN_UNBUFFERED, 0, 0);
var scriptableInput = Cc["@mozilla.org/scriptableinputstream;1"]
.createInstance(Ci.nsIScriptableInputStream);
scriptableInput.init(input);
var output = socket.openOutputStream(Ci.nsITransport.OPEN_UNBUFFERED, 0, 0);
這可以讓你的輸入和輸出流。您可以通過nsIScriptableInputStream.read()
接收數據並通過nsIOutputStream.write()
發送。但是你仍然必須自己實現IMAP/SMTP邏輯(你不能在Thunderbird中用C++編寫當前的實現,而新的基於JavaScript的實現還沒有準備好)。
https://bugzilla.mozilla.org/show_bug.cgi?id=733573是爲web應用程序實現一個TCP API;這是一項正在進行的工作,最多隻能在Firefox 17中使用。但是,如果您閱讀了補丁(https://bugzilla.mozilla.org/attachment.cgi?id=643432&action=diff#a/b2g/components/TCPSocket.js_sec1),則TCPSocket對象幾乎公開了將SSL連接到任意服務器所需的一切,因此您應該能夠竊取此代碼!
問題是關於擴展,而不是Web應用程序。擴展已經可以訪問套接字API,這不是什麼新東西。 – 2012-07-30 09:36:11
當然,但是該補丁包含了一個很好的示例,說明如何使用chrome代碼中的套接字api,並且被問到的人可能能夠在那裏竊取抽象,因爲他要求一種優雅的方式。 – 2012-07-30 09:43:17
很棒。感謝這 – enthdegree 2012-08-02 02:03:00
您好弗拉基米爾,你能告訴我是否有可能從Firefox擴展中執行正常的Ajax查詢。對於來自foo.com網站的網頁來說,當Ajax url被指定爲test.php時,請求會發送到foo.com/test.php,它可以發送適當的結果。我如何在Firefox擴展中使用它,因爲它本身沒有網站?我必須通過JSONP來完成嗎? – SexyBeast 2014-06-25 10:28:23
@Cupidvogel:如何創建一個新問題而不是在一個完全不相關的問題上發表評論?或者只是搜索,現在有很多關於這個問題的問題。 – 2014-06-25 11:23:28