从电子邮件回复中删除原始邮件

ty.*_*ty. 8 email email-integration node.js

我的应用程序接收用户发送的电 例如,来自gmail的响应如下:

This is some new text

On Sun, Apr 1, 2012 at 3:32 AM, My app <
4f77ed3860c258a567aeabf8@myapp.com> wrote:

> Original...
> message..
Run Code Online (Sandbox Code Playgroud)

当然,这种治疗因客户而异.

现在我正在识别'4f77ed3860c258a567aeabf8'然后丢掉所有内容,因为我知道他们发送了什么电子邮件地址.这不是一般解决方案,但适用于我的目的,除非在"原始消息"行中有换行符,如上例所示.

是否有更好的标准方法从用户对电子邮件的回复中删除过去的邮件?

Pet*_*ons 5

有一个名为emailreplyparser的 npm 模块,它是从 github ruby​​ 库中移植过来的,它执行此操作。正如您指出的那样,用于此的格式不是标准的,因此任何解决方案都将非常脆弱和不完美,但是whaddayagonnado

下面是一个示例,我使用从新 Gmail API 获得的 JSON 响应并成功访问给定消息的新回复文本。

var erp = require('emailreplyparser').EmailReplyParser.read;
var message = require('./sample_message.json');
var buffer = new Buffer(message.payload.parts[0].body.data, 'base64');
var body = buffer.toString();
//body is the whole message, the new text and the quoted reply portion
// console.log(body);
var parsed = erp(body);
//this has just the text of the reply itself
console.log(parsed.fragments[0].content);
Run Code Online (Sandbox Code Playgroud)

请注意,如果作者将回复文本和引用的消息片段交织在一起,可能会有几个有趣的片段。


Fla*_*ape 4

如果您想要 100% 删除除最新帖子之外的任何内容,请比较新邮件和上一封邮件中的每个字符。如果您不想编写自己的差异解析器,请查看此库。

https://github.com/cemerick/jsdifflib

或者,如果您想要一个轻量级算法,请查看这个

http://ejohn.org/projects/javascript-diff-algorithm/