Gmail API插入邮件会添加其他“已接收”标头,并显示插入时间而非接收时间

时间:2014-07-31 06:08:32

标签: java gmail gmail-api

他 当我使用它的RESTFul api将消息插入Gmail时,我从 rfc822 MimeMessage 加载消息,此消息包含原始*"已收到&# 34; *标题,例如具有值星期四,2014年2月27日19:57:07 -0800(太平洋标准时间)。当此消息插入Gmail时,会收到一条新消息"已收到"标题已添加,它具有插入时间的日期时间戳,并且UI中未显示原始标题,它在电子邮件中显示,但其值不用于显示插入消息的时间。有没有办法改变这种行为?

由于

3 个答案:

答案 0 :(得分:1)

您是否尝试过设置" internalDateSource"查询参数值" dateHeader"在插入请求了吗?默认情况下,它使用" receivedTime"这会导致你描述的功能。

enter image description here 这是供参考的链接。您可以在"参数"下找到您要查找的信息。标题:
https://developers.google.com/gmail/api/v1/reference/users/messages/insert


一旦我更改了代码以设置internalDateSource =" dateHeader"邮件原始日期值显示在用户的Gmail邮箱中,而不是服务器收到邮件的时间。我在用户邮箱的搜索栏中使用 before:命令进行了测试,以确保其有效。

enter image description here

以下是命令列表:
https://support.google.com/mail/answer/7190

FWIW,我正在使用.NET API的.NET客户端API包装器,所以我没有直接进行REST调用。但是,在.NET中设置与此值相关的属性似乎对我有用。希望这对你有用。

答案 1 :(得分:0)

我相信这是设计的,即使是通过普通渠道收到的邮件也是如此。 考虑到标题可以伪造,例如,我可以制作一封电子邮件,显示它是在一年前发送的,现在发送给您。在查看收件箱时,您是否希望依赖(可能是假的或不正确的)标题或收到的实际时间?因此,您真正要求的是更改Google服务器收到电子邮件的时间,公共GMail API不会公开该功能。

但是,搜索旧的导入电子邮件时使用的是发送日期标题而不是收到的日期标题,因此您仍然可以按时间范围进行过滤。

答案 2 :(得分:0)

额外的Received标头是良性的。你所说的是消息的内部日期是基于Date标题还是当前时间戳。正如您所注意到的,目前它始终使用当前时间并且不允许使用日期。

您使用的是messages.insert或messages.import(或其他类似messages.send)吗?

对于messages.insert和messages.import(仅限当前邮箱),允许内部日期为“Date”标题似乎是一个合理的选项。不是像messages.send这样的东西,虽然有可能伪造等等。