2013-04-06 97 views
4

我正在寻找一种方式来弄清楚如何获得线程ID为Gmail的特定邮件,之前它被发送或在其中单击发送按钮的位置。获取线程ID在Gmail

目前,我的JavaScript以刮等物品掉的电子邮件,并将它们存储在其中工作得很好,除了为线程ID一切记录工作。

线程ID可以后我在URL中发送的电子邮件中找到:

https://mail.google.com/mail/u/0/?shva=1#inbox/13ddda647539dcca 

在这种情况下,线程ID(如果我是对的 - 是13ddda647539dcca

任何帮助。理解

回答

0

你可以尝试:

var matched = window.location.hash.match(/[A-Za-z0-9]+$/); 
if (matched) { 
    // Found alphanumeric string at end of hash 
} 

,你可以得到的值w ith matched[0]

window.location.hash应该只抓住 “#收件箱/ 13ddda647539dcca” 的一部分。然后,正则表达式将匹配字符串末尾的任何字母数字字符。所以“收件箱”与线程ID之间用“/”分开的事实很重要。

当然,所有这一切都依赖于Gmail中保持URL相同的约定下,因为它目前似乎是可靠性。

+0

感谢您的答复。如果我只是从URL中获取它,这将起作用,但我试图在发送电子邮件之前获取此ID - 或单击** send **按钮时。主要目的是让我在发送后可以直接访问这封电子邮件。 – HappyCry 2013-04-06 17:17:58

+0

@HappyCry我理解你的观点,但我“有点困惑,这是为了**新的电子邮件,还是为**回复了一个线程?当回复一个线程时,它应该在URL中可用在你回复的时候,我的方法应该可以工作,如果是新邮件,我不确定你想要什么(除非邮件在撰写期间已经保存)。在结尾处有“#compose”,只有在你发送/保存电子邮件后**之后,URL才会改变为拥有线程ID。我不认为ID是在你最终发送它之前创建的,因为ID是在服务器上创建 – Ian 2013-04-06 17:34:12

+0

我认为你是对的,这种方法在回复框中使用它是很好的,因为ID是在服务器上创建的,你会想到我可以附加的任何其他唯一标识符* *发送**?感谢您的帮助,非常感谢。 – HappyCry 2013-04-06 17:39:26

4

如果有人仍有意 - 电子邮件是通过观察出现在页面的顶部发出后,您可以检索线程ID。该跨度包含一个链接,该链接具有名为'param'的属性,该属性具有线程ID。