我正尝试从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