gpt4 book ai didi

php - 在 PHP 中使用 IMAP 知道电子邮件是否是回复

转载 作者:可可西里 更新时间:2023-11-01 00:01:04 25 4
gpt4 key购买 nike

我不确定它是否在标题中,但我正在寻找一种方法来判断我收到的电子邮件是否是对我发送的电子邮件的回复,如果是,则只获取新文本,不是“引用文本”

一些背景知识:我正在创建一个可以自动发送电子邮件的脚本。我正在创建一个 cron 作业以定期运行以检查是否有任何回复。如果有回复,我只想捕获新的东西,而不是旧的东西。

过去,我会发送主题中包含 id 的电子邮件(您有一个新回复 [1234]),然后会检查主题中 [ 和 ] 之间的内容。然后我会抓取所有消息并存储它,因为每个网络浏览器/电子邮件都使用不同的字符或样式来引用文本。有些做“>”,有些做水平线,有些什么都不做。

无论如何,我只是在电子邮件 header 中寻找一些表明他们正在回复以及新文本可能是什么的内容。如果不可能,我会继续做我正在做的事情。

最佳答案

通过结合使用 In-Reply-ToReferences,您可以知道一封电子邮件是否是另一封电子邮件的回复。

根据此 RFC 1,每封电子邮件在其 header 中都有一个名为 Message-ID 的唯一 ID。 ,您可以跟踪任何电子邮件的祖先。

我已经检查过了,它在所有客户端(Outlook、Thunderbird)中都有效
我将举一个例子来使用。

1- 在您第一次发送的电子邮件的标题中,您(您的邮件服务器或您在代码中)发送一个ID(Message-ID),如果您电子邮件的开源,您将在顶部看到这样的内容:

... // You (your code) send:
Message-ID: <1@your-domain-mandatory.com>
...

你只需要在你的程序中保留这个Message-ID。任何后续回复都将引用此 ID

2- 客户将回复邮件1给您。客户端将发送一个 crucial header 给你,告诉你除了它自己的 Message-ID 之外,这个回复是针对哪个电子邮件。

... // Client(Thunderbird) send:
Message-ID: <2@your-domain-mandatory.com>
In-Reply-To: <1@your-domain-mandatory.com>
...

当您收到第二封电子邮件时,您可以很容易地跟踪您发送的前一封电子邮件,因为 mail(1) 的 IDIn-Reply 中-To 邮件的 header (2)。

3- 如果你想在你的代码中再次回复这封邮件,你只需要将邮件(2) 的Message-ID 放在In-Reply-To header 和References header 中mail(1) 和mail(2) 的Message-ID。这样客户端就会正确理解链。

... // You (your code) send:
Message-ID: <3@your-domain-mandatory.com>
In-Reply-To: <2@your-domain-mandatory.com>
References: <1@your-domain-mandatory.com> <2@your-domain-mandatory.com>
...

通过这个 header ,您告诉客户这封电子邮件是对 mail(2) 的回复,祖先是 mail(1) 和 mail(2)。

我已经与他们合作并阅读了他们的相关信息并且它正在工作,我现在的问题是只获取最后一封电子邮件的文本而不是回复中引用的文本。 (我们正在运行自己的票务系统,我们为每封电子邮件创建评论)

关于php - 在 PHP 中使用 IMAP 知道电子邮件是否是回复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8291372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com