Java Gmail API插入消息添加附加信息;“收到”;标题,并显示插入时间而不是接收时间

Java Gmail API插入消息添加附加信息;“收到”;标题,并显示插入时间而不是接收时间,java,gmail,gmail-api,Java,Gmail,Gmail Api,他 当我使用Gmail的RESTFul api将消息插入Gmail时,我从rfc822 MimeMessage加载消息,该消息包含原始的*“Received”*头,例如,其值为Thu,2014年2月27日19:57:07-0800(PST)。当这封邮件插入Gmail时,会添加一个新的“Received”(已接收)邮件头,该邮件头具有插入时的日期时间戳,原始邮件头不会显示在UI中,它会显示在电子邮件中,但其值不会用于显示插入邮件的时间。有没有办法改变这种行为 谢谢我相信这是故意的,即使是通过正常渠

他 当我使用Gmail的RESTFul api将消息插入Gmail时,我从rfc822 MimeMessage加载消息,该消息包含原始的*“Received”*头,例如,其值为Thu,2014年2月27日19:57:07-0800(PST)。当这封邮件插入Gmail时,会添加一个新的“Received”(已接收)邮件头,该邮件头具有插入时的日期时间戳,原始邮件头不会显示在UI中,它会显示在电子邮件中,但其值不会用于显示插入邮件的时间。有没有办法改变这种行为


谢谢

我相信这是故意的,即使是通过正常渠道收到的邮件。 考虑标题可以伪造,例如,我可以制作一封电子邮件,显示它是在一年前发送的,现在发送给你。在查看收件箱时,您希望依靠(可能是虚假或不正确的)邮件头,还是实际收到邮件的时间?因此,你真正想要的是改变谷歌服务器接收电子邮件的时间,公共GMail API不会公开该功能


不过这并不糟糕,搜索旧导入的电子邮件时使用的是发送日期标题,而不是接收日期标题,因此您仍然可以按时间范围进行筛选。

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

您是否使用messages.insert或messages.import(或类似messages.send的其他内容)


对于messages.insert和messages.import(仅针对当前邮箱),允许将内部日期作为“日期”标题似乎是一个合理的选择。不适用于诸如messages.send之类的内容,但考虑到伪造等的可能性。

您是否尝试过在插入请求中将“internalDateSource”查询参数设置为值“dateHeader”?默认情况下,它使用“receivedTime”,这将导致您描述的功能

这是供参考的链接。您要查找的信息可以在“参数”标题下找到:



一旦我将代码更改为set internalDateSource=“dateHeader”,消息的原始日期值就会显示在用户的Gmail邮箱中,而不是服务器收到消息的时间。我使用用户邮箱搜索栏中的before:命令进行测试,以确保它正常工作

以下是命令列表:


FWIW,我正在为Gmail API使用.NET客户端API包装器,所以我不会直接进行其余调用。然而,在.NET中设置与此值相关的属性似乎对我起到了作用。希望这能为您解决。

Gmail IMAP的行为有所不同:)它们使用时间戳头来形成您添加到IMAP存储的消息。所以,至少我期望行为一致。我尝试使用insert和import,两者的工作方式相同(关于时间戳)。如果您可以提供一个选项来使用消息头的时间戳而不是当前时间戳,那就太好了。谢谢