当前位置:首页 > 开发 > 互联网 > 正文

邮件列表应用不能支持 QQ 邮箱的原因

发表于: 2011-11-22   作者:chloerei   来源:转载   浏览次数:
摘要: 最近公司正在研发的一个邮件列表服务,因为需要将同一个话题的前后邮件串成线索,所以去了解了一些邮件头定义,以及如何识别邮件对话上下文的方法。 标准的邮件头里面定义了一个 In-Reply-To 字段,这个字段在 rfc822 中是这么 解释的: 引用 4.6.2. IN-REPLY-TO The contents of this field identify previous
最近公司正在研发的一个邮件列表服务,因为需要将同一个话题的前后邮件串成线索,所以去了解了一些邮件头定义,以及如何识别邮件对话上下文的方法。

标准的邮件头里面定义了一个 In-Reply-To 字段,这个字段在 rfc822 中是这么 解释的:
引用
4.6.2. IN-REPLY-TO

The contents of this field identify previous correspondence which this message answers.


这个头很容易理解,它存放了当前邮件回复的邮件ID,比如用 gmail 回复邮件,邮件头里面会包含以下字段:
引用
Message-ID: <CAEyJnUq2=7B_RRfe1=1iNVGh_Tqc5n=NJzrBzAJ8BEE9VnkE0Q@mail.gmail.com>
In-Reply-To: <tencent_1118E66B5C5AE62D25831465@qq.com>


这样,各类邮件列表或者邮件客户端就可以识别这封邮件是回复了 <tencent_1118E66B5C5AE62D25831465@qq.com> 这封邮件的,而如果要回复这封gmail邮件,就应该把 Gmail 邮件的 Message-ID 放到 In-Reply-To。

于是公司的邮件列表服务就基于邮件的 In-Reply-To 信息做了一个 web 界面,邮件的收发在后台被串成一个个 Topic。测试过程中大部分邮箱(163,gmail,msn……)都能正常处理,却发现 QQ 邮箱每回一个邮件都新建了一个主题,似乎是没有正确识别它的上下文。于是用 QQ 回复一封邮件,打开原文查看邮件头(隐去我的email地址):
引用
Delivered-To: chloe***@gmail.com
Received: by 10.182.28.233 with SMTP id e9cs131752obh;
        Mon, 21 Nov 2011 19:18:14 -0800 (PST)
Received: by 10.231.8.143 with SMTP id h15mr3969665ibh.94.1321931893044;
        Mon, 21 Nov 2011 19:18:13 -0800 (PST)
Return-Path: <chloe***@qq.com>
Received: from smtpbg52.qq.com (smtpbg52.qq.com. [64.71.138.43])
        by mx.google.com with SMTP id m10si3572370icu.21.2011.11.21.19.18.12;
        Mon, 21 Nov 2011 19:18:13 -0800 (PST)
Received-SPF: pass (google.com: domain of chloerei@qq.com designates 64.71.138.43 as permitted sender) client-ip=64.71.138.43;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of chloerei@qq.com designates 64.71.138.43 as permitted sender) smtp.mail=chloe***@qq.com; dkim=neutral (no signature) header.i=@qq.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s0907;
t=1321931892; bh=AXXnKE4F5rR44xTUgYD2wpsmGbJ6mYVlVOK31SUjW3w=;
h=X-QQ-SSF:X-QQ-BUSINESS-ORIGIN:X-Originating-IP:X-QQ-STYLE:
X-QQ-mid:From:To:Subject:Mime-Version:Content-Type:
Content-Transfer-Encoding:Date:X-Priority:Message-ID:X-QQ-MIME:
X-Mailer:X-QQ-Mailer:X-QQ-ReplyHash;
b=aZ400d+i6ptIpZhMY6kLfgYh4QiS80cgiYeQgU4fxEZQYa8zUjytvkEd2kyJ/AJrW
lKQvyGam0JId/Ql1frfurdIjNDmcLh38a8dJJYvsGEkc6AcaAc3Ji6xethKolD7
X-QQ-SSF: 00010000000000F0000000000000000
X-QQ-BUSINESS-ORIGIN: 2
X-Originating-IP: 211.103.191.134
X-QQ-STYLE:
X-QQ-mid: webmail504t1321931889t662760
From: "=?gbk?B?Y2hsb2VyZWk=?=" <chloe***@qq.com>
To: "=?gbk?B?Y2hsb2VyZWk=?=" <chloe***@gmail.com>
Subject: =?gbk?B?u9i4tKO6suLK1LuwzOI=?=
Mime-Version: 1.0
Content-Type: multipart/alternative;
boundary="----=_NextPart_4ECB1471_DCF2B518_079AED38"
Content-Transfer-Encoding: 8Bit
Date: Tue, 22 Nov 2011 11:18:09 +0800
X-Priority: 3
Message-ID: <tencent_1118E66B5C5AE62D25831465@qq.com>
X-QQ-MIME: TCMime 1.0 by Tencent
X-Mailer: QQMail 2.x
X-QQ-Mailer: QQMail 2.x
X-QQ-ReplyHash: 971243411


可以看到,长长的邮件头里面竟然就没有 In-Reply-To 字段。那么,丢了 In-Reply-To 字段,QQ 邮箱的会话功能又是怎么做到的呢?

看到最后一个字段,忽然明白了。
引用
X-QQ-ReplyHash: 971243411


这是只有腾讯自己才能识别的邮件头。

想不明白腾讯抛弃现有的标准邮件头不用,自建邮件头是为什么,这样的结果是除了少数像 Gmail 这样智能根据邮件全文判断上下文的邮件服务能正常识别线索外,其余为标准邮件协议而写的客户端都不能处理了。最终公司的邮件列表服务暂时放弃了支持非标准的 QQ 邮件。

邮件列表应用不能支持 QQ 邮箱的原因

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
最近工作挺清闲的,有空的时候陪妹子出去玩玩,自己看看小说,看看电影,日子过的挺欢乐的,这个星
最近工作挺清闲的,有空的时候陪妹子出去玩玩,自己看看小说,看看电影,日子过的挺欢乐的,这个星
  发邮件?用网页不就行了?   一般的邮箱都是通过帐号加密码然后登录到腾讯的Mail Server。然
发邮件?用网页不就行了?   一般的邮箱都是通过帐号加密码然后登录到腾讯的Mail Server。然后由M
转载请标明出处! 首先要开启qq邮箱SMTP服务 链接http://jingyan.baidu.com/article/0f5fb099dffe7c6
Foxmail邮箱最新应用指南--如何使用「邮件标签」? 最近看到很多的朋友收发电子邮件,现在我们帮助
前言 本文的重要部分: 1、抓包获取QQ空间或者邮箱登陆地址,分析参数,用户名,密码,验证码,gtk
网络步入了营销的时代,营销则进入精准、细化的操作阶段,QQ用户群的分类则是很多进行精准营销的企
前言 通过前两篇的代码编写已经能正常模拟QQ登陆,拿到cookie也就是我们进行以后相关操作的金钥匙。
本项目是一个关于课程表的项目源码,主界面只有一个我的课程界面,点击任意表格可以填写周一到周五
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号