2012-12-13 28 views
2

对于一个项目,我需要获取当前打开的邮件的正文,并将该邮件传递给Web服务以处理和存储其中的一些数据。获取带有扩展名的邮件正文的邮件正文

我认为最好的方法是使用扩展来获取消息正文(以及一些附加信息),然后将其作为web请求发送到服务以插入到数据库中。

但我不知道我该如何处理这个问题。我跟着一些教程让我开始使用chrome插件,但是我找不到如何获得消息的正文。

我发现你需要内容脚本,但即使如此,我也不知道。

任何人都可以给我一个headstart吗?

回答

0

如果我不得不这样做,我会试着找出包含GMAIL客户端正文的DIV的ID ...... 使用jQuery来获取DIV的HTML或文本内容非常简单。 ..看看:http://api.jquery.com/html/

一个简单的jQuery选择会是这个样子:

$("#gmailsBodyDivID").html() 

如果jQuery是不是一种选择,你可以使用JavaScript的getElementByID(HTTP GET的DIV:// WWW。 w3schools.com/jsref/met_doc_getelementbyid.asp)

最后,如DudeOnRock所述,您应该使用Ajax请求到您的web服务。

难的是要知道如何Gmail的名字你要找的...我只是刚刚看了一下,并在矿DIV,出现了一些奇怪的命名...

<div id=":w1" class="ii gt adP adO"><div id=":w2"> 

我我不知道“:w1”或“:w2”代表什么,也不知道如何将它们与jQuery选择器一起使用......也许更有知识的人可能会在那里发现一些亮点。

...所以我想你应该专注于第一...

如果标识证明很难,你可能希望使用类名jQuery选择...

祝你好运!

-1

Chrome扩展程序本质上是用JavaScript编写的。如果没有对JavaScript的某些理解,你打算做的事情会变得非常困难。下面是一些指针:为了访问网站元素,我建议你学习使用JavaScript进行DOM操作。要将数据发送到网站,您将不得不使用HTTPRequests(AJAX)。

0

我不确定您的项目具体要求是什么,但是可以设置一个电子邮件地址来转发这些电子邮件地址?

从那里,你只需要用你的首选语言设置一个服务器来检查新电子邮件并处理它们(过滤内容,插入数据库等)。

优点:

  • 你没有锁定使用Chrome +扩展
  • 你可以使用任何浏览器,设备,电子邮件应用程序转发电子邮件
  • 你不需要破译凌乱的Gmail HTML
  • 更改Gmail中的HTML/JS/CSS不会打破你的内部流程
  • 无须维护/更新Chrome扩展事物的变化(他们会)
0

这很难。正如@frenetix指出的那样,你可以获取你想要的元素的ID,并按照他(或她)的方法。困难的是,Google几乎每次在加载Gmail时都会更改元素ID,因此几乎不可能。

你可以做的一件事是假设你(或用户)正在点击撰写窗口。然后你可以做“document.activeElement”来获得适当的DOM元素。这至少会让你进一步做到你想做的事情,尽管它还没有完成。

祝你好运。我现在在这个领域工作,这很艰难。

1

这里是我想出的代码,一定要在附加部分添加按钮,并给他们一个ID与计数。这将等待div在到达点击或载入时加载它,将附加材料插入指定区域。没有必要担心随机类,因为它们是静态的。代码已经工作了两年。

window.addEventListener("DOMNodeInserted", function(event) { 
     //TEST TO SEE WHERE CSS IS AT 
     // $(event.target).append($(event.target).parent()[0].className); 
     if($(event.target).parent()[0].className == 'oc gU') 
     { 

      //ADD SEND BUTTON FOR MESSAGES 
      //SUBJECT OF ENTIRE EMAIL GLOBAL 
      var subject = $(event.target).parents().eq(28).children(1).find(".hP").text(); 

      //GET DATA EMAIL AND NAME 
      //Can assign via id or data-name and jid for email 
      var imageid = $(event.target).parents().eq(18).find("img[jid]").attr("id"); 

      //THIS IS THE SEND BUTTON IN REPLAY ADD A BUTTON NEXT TO IT WITH THIS      
      $(event.target).parents().eq(1).find(".gU.Up").children(0).append("addbuttonid here"); 
      //set click event for button 
      $('#'+addbuttonid).click(function(){  
       //TO DO HERE 
       //BODY FROM the REPLY MESSAGE 
       var body = $(event.target).parents().eq(11).find('.Am').text(); 
       //PREVIOUS THREAD MESSAGES OPTIONAL 
       var body = body + $(event.target).parents().eq(11).find('.gmail_extra').text(); 

      }); 


     } 
     else if($(event.target).parent()[0].className == "aCi") 
     { 
      //THREAD MESSAGE 
      //GET EMAIL SUBJECT 
      var subject = $(event.target).parents().eq(17).children(1).find(".hP").text(); 
      //GET TO INFO 
      var to = $(event.target).parents().eq(7).find('.g2'); 
      //GET NAME AND EMAIL 
      var imageid = $(event.target).parents().eq(7).find("img[jid]").attr("id"); 
      var value = $("#\\"+imageid).attr("jid"); 
      var vname = $("#\\"+imageid).attr("data-name"); 
      //GET DOCUMENT BODY 
      var tmp = $(event.target).parents().eq(6).find(".gs"); 
      var body = tmp.text(); 

      //GET DOCUMENT DATE 
      var date = $(event.target).parents().eq(7).find('.g3').attr('title'); 
      date = date.replace(" at ", " "); 
      //ADD THE BUTTONS HERE WITH INITIAL VALUES 
      $(event.target).parents().eq(6).append('addbutton2'); 

      $("#"+addbutton2).click(function(event){ 
       var email = $("#\\"+$(this).attr("data-imageid")).attr("jid"); 
       var name = $("#\\"+$(this).attr("data-imageid")).attr("data-name"); 
       var body = $(this).attr("data-body"); 
       //TOD FOR BUTTON NEXT TO REPLY ICON ON THREAD AS OPENED 

      }); 

     } 
}); 

正如你可以用这个代码,看看你现在可以添加按钮,我的Gmail无论是在回答部分或在主题的任何消息,你的欢迎:) UI。 这是唯一的代码,除非你自己通过CHROME EXTENSIONS工作。 Gmail.js或使用该API仅仅是没有必要与此,因为你可以从网页提取数据

1

这是你的过程应该是什么:

  1. 当消息是开放的,你应该看到电子邮件正文中的某个按钮或Gmail中的某处。

  2. 点击按钮应该复制电子邮件的正文并将其推送到Web服务器。

  3. 如果您想自动复制粘贴邮件,您可以默认点击此按钮。

对于这个过程 -

  1. 创建content_script.js文件,并将该按钮在Gmail DOM。

  2. 一旦点击该按钮,发送一条消息到eventpage.js,该消息将包含当前打开的电子邮件的正文。 注意我没有使用background.js,而是eventpage.js,因为google会要求您避免使用background.js,两者无论如何都是一样的,而且持久性的差异很小。

  3. 您的网络服务器可以接收并存储消息。

如果你想避免按钮过程然后content_script.j S的关系自动查找电子邮件打开事件,并重复上述过程。但我建议你保留按钮,因为有时候你可能会点击你不想复制的邮件。