标签: email-threading

Rails Griddler和对话/电子邮件线程

我正在努力弄清楚如何最好地连接/线程化一系列电子邮件.这似乎是一个常见的问题,我很惊讶我无法轻易找到其他人如何处理它的信息.我发现的唯一一件事是关于JWZ线程的帖子,它更关注在一封电子邮件中解析一个线程.我想知道是否有人能指出我当前的一些解决方案.

我正在使用thinkbot griddler gem来处理传入的电子邮件到模型Message(s)和单独的模型Contact(s),我有第三个用于存储回复的模型,例如Reply.

我目前的想法是通过独特的联系方式和主题来描述它们.但话题再次略有改变.例如来自"这个主题" - >"Re:re:这个主题"我可以使用正则表达式尝试解析"re:"s或者我可以使用类似amatch的东西进行字符串比较?

但话又说回来,2个月后为同一个用户出现的同一主题该怎么办?还添加一些关于当前日期的逻辑,以便线程仅使用最近的电子邮件.那么电子邮件标题本身可能还有其他有用的内容吗?

  • 用户(按唯一的电子邮件地址)
  • 唯一主题行(正则表达式:处理问题?)
  • 当前日期(电子邮件必须是相对于彼此的日期)
  • 在电子邮件标题中寻找的其他一些线索?

我粗略地想知道如何做到这一点,我只是好奇地看到一些当前的实现,我似乎无法找到任何.

任何指针将不胜感激!

email ruby-on-rails email-threading ruby-on-rails-4 griddler

17
推荐指数
1
解决办法
943
查看次数

线程推文有什么好的启发式方法?

每个人都知道,如果你想要发送电子邮件,你可以使用Jamie Zawinski的算法.但这是一个新世纪,还有一种新的消息传递服务.

Twitter上发布的线程状态更新的最佳算法是什么?

我绝对喜欢它应对的事情:

  • 简单的部分:使用in_reply_to_status_id, in_reply_to_user_idin_reply_to_screen_name.(顺便说一句,找到这些值的正确文档本身就很有用!例如,这些文档显然与此处没有关联 .)

  • 用于从提及具有@约定的用户但未明确回复特定消息的消息推断"回复"关系的良好启发式. 如果您要求,这些"提及" 现在在状态的"实体"元素中提供.这些启发式方法可能会考虑(a)两个状态更新之间的时间,(b)两个用户之间是否存在后续回复等.(回复包含带有附加注释的旧式转发,如user85509所述以下 只是这种回复方式的一个例子.)

  • 在两个以上用户之间进行的对话.

  • 使用给出算法的一组推文,或推特上的所有推文.

......但也许你可以想到更多.

algorithm twitter heuristics email-threading

14
推荐指数
1
解决办法
615
查看次数

将电子邮件组织成线程的算法?

是否有任何命名/着名/特别好的算法用于将电子邮件组织到线程中?

我想在我的网站上添加一个类似于Google网上论坛(和其他邮件列表)的功能,我只是想知道是否有任何已发布的此类组织算法.我知道滚动我自己可能相当容易,但在可通行算法和好算法之间的用户体验可能会有很大差异.

已经在ruby中实现的算法的加分点!

ruby email email-threading

10
推荐指数
1
解决办法
747
查看次数

如何使发送的电子邮件在GMail收件人的视图中显示为带有Message-ID,In-Reply-To和References的线程

我已经阅读了一些很棒的在线资源,比如http://www.jwz.org/doc/threading.html,似乎任何电子邮件都是通过Message-ID标题发送的,然后对它的任何回复包括In-Reply-To命名该ID以及Refences哪些可以命名父级消息ID列表,电子邮件客户端在查看线程视图中的电子邮件列表时使用此信息构造线程.

我的问题是:是否可以将一系列电子邮件发送给带有伪标题的收件人,以使它们出现在一个没有收件人回复的线程中?如果是这样,为什么下面的尝试不起作用?

我们有一个系统可以发送几封与我们系统中特定实体相关的电子邮件.假设我们多次向每个小部件销售小部件和电子邮件用户.我们希望特定小部件ID的所有电子邮件在我们用户的电子邮件客户端中显示为电子邮件主题.

这里的旅行似乎通常是发送电子邮件,然后回复.我们的系统只是想发送几封电子邮件,并伪造In-Reply-To和References标题,以诱骗电子邮件客户端在树中显示它们.

我正在使用的Message-ID格式是:'foobar'+ widgetId + sequence

  • widgetId =每个小部件唯一的数字,例如1234
  • sequence =每次发送电子邮件时递增的序号

第一封邮箱:

  • 邮件ID <foobar-1234-0@server.com>
  • In-Reply-To:未提供
  • 参考文献:未提供

第二封邮箱:

  • 邮件ID <foobar-1234-1@server.com>
  • 在-回复: <foobar-1234-0@server.com>
  • 参考文献: <foobar-1234-0@server.com>

第三封邮箱:

  • 邮件ID <foobar-1234-2@server.com>
  • 在-回复: <foobar-1234-1@server.com>
  • 参考文献: <foobar-1234-0@server.com> <foobar-1234-1@server.com>

(顺便说一句,包括@server.com消息ID 的部分似乎是至关重要的.没有它,使用例如foobar-123-0,我们的SMTP服务器只是忽略它并使用它自己生成的消息ID)

电子邮件在Thunderbird中正确显示,作为一棵树,但在Gmail中没有,它们只是在收件箱中一个接一个地列出,而其他会话在它们旁边正确地进行了线程化.我不确定我是否弄错了,Thunderbird在糟糕的数据方面做得最好,或者如果Gmail需要一些我不提供的额外非标准糖.

这是我的node.js测试脚本:

/*jshint dojo:true */
/*global console:true */
'use strict';
var Q = require('q'),
    nconf = require('nconf'),
    optimist = require('optimist'),
    nodemailer = require('nodemailer');

console.log('Started to run.');
var argv = optimist.argv,
    config = nconf.argv().env().file('conf.json'),
    smtpConfig …
Run Code Online (Sandbox Code Playgroud)

email gmail email-headers email-threading nodemailer

10
推荐指数
1
解决办法
7222
查看次数

SendGrid API v3:回复线程

我正在尝试使用 SendGrid v3 API 发送一封电子邮件作为对上一个线程的回复。但它始终在 Outlook 中显示为新的电子邮件线程。我正在使用“Message-ID”、“In-Reply-To”和“References”字段,但它总是无法在单线程下显示。我在这里引用这个线程来设置标题。

SendGrid 文档没有指定 v3 是否支持回复上一个线程。任何实现电子邮件线程对话的方式都是值得赞赏的。

c# sendmail email-threading sendgrid-api-v3 .net-standard-2.0

6
推荐指数
1
解决办法
2227
查看次数

PHP Imap:线程电子邮件对话

我是 PHP 中 IMAP 函数的新手,我的任务是构建一些票务站点。
我得到了基本的电子邮件获取部分,但我有点偶然发现了“线程对话视图”的障碍。

我需要能够像智能手机的 SMS 工具一样,在线程对话视图中显示电子邮件(发送和接收)。

我发现的大多数算法都只是处理线程收件箱,不包括已发送的项目。如果你们能帮我解决这个问题就好了。

我的最终目标结果最初是一组“未读”邮件,按主题分组,每个邮件都包含属于该主题的交换电子邮件的踪迹。

像这样的东西:

array
(
  [0] => array
         (
           [0] => array
                  (
                    'date' => 'some date',
                    'sender' => 'some sender',
                    'message' => 'yes i am',
                    'subject' => 'Re: Fubar',
                    'status' => 'unread'
                  ),
           [1] => array
                  (
                    'date' => 'some date',
                    'sender' => 'some sender',
                    'message' => 'are you from america?',
                    'subject' => 'Re: Fubar',
                    'status' => 'read'
           [2] => array
                  (
                    'date' => 'some date',
                    'sender' => 'some sender', …
Run Code Online (Sandbox Code Playgroud)

php imap email-threading

5
推荐指数
1
解决办法
2982
查看次数

无法使用 nodemailer (gmail) 启动邮件线程(回复邮件)

我正在使用 nodemailer 发送电子邮件。但我想回复邮件(开始一个新线程)。我尝试使用以下代码发送邮件回复

var nodemailer = require('nodemailer');

const subject = 'Hey I am test';

var transporter = nodemailer.createTransport({
  service: 'gmail',
  auth: {
    user: '*******',
    pass: '*******'
  }
});

const mailOptions = {
  from: 'mymail@gmail.com',
  to: 'receiver@gmail.com',
  subject,
  text: 'Body',
};

transporter.sendMail(mailOptions, function (error, info) {
  if (error) {
    console.log(error);
  } else {
    console.log(info.messageId);
    const threadOptions = {
      from: 'mymail@gmail.com',
      to: 'receiver@gmail.com',
      subject:'Re: ' + subject,
      text: 'This is reply',
      inReplyTo: info.messageId,
      references: [info.messageId]
    };
    transporter.sendMail(threadOptions);
  }
});

Run Code Online (Sandbox Code Playgroud)

但它是作为新邮件发送的。在使用inReplyTo的 …

javascript email gmail email-threading nodemailer

5
推荐指数
1
解决办法
161
查看次数

电子邮件线程

我正在帮助台应用程序中工作,我有一个独立的脚本来查询邮件服务器并解析它在那里找到的邮件.
我面临以下问题:我如何以可靠的方式弄明白邮件是什么邮件回复?
我可以在主题中添加一些内容,例如"[ticket:21312]"并查找该内容但是如果用户更改了主题该怎么办?还有另外一种方法吗?我可以通过设置自定义邮件标题来查找,或者在用户回复的邮件服务器之间不保留标题吗?当我从我的应用程序向非现有用户或配额已满的用户发送消息时,他的服务器以通常的标准消息回复"邮件守护程序在....不能......"然后主题也将被修改,我不能正确地将消息作为对现有邮件的回复.

gmail是如何做到的?在几乎所有情况下,消息都完美地排序.

sorting parsing email-threading

4
推荐指数
1
解决办法
1496
查看次数

Laravel 5.6:如何发送电子邮件,客户端将它们显示为线程/对话?

我的 Laravel 应用程序包含一个票证系统,用于发送电子邮件通知。

所有电子邮件都是这样构建和发送的:

public function build()
{
    $email_from_name = "Support - " . config('app.name');
    $subject = "[" . $this->ticket->id . "] " . $this->ticket->subject . " - " . config('app.name');

    return $this->from('support@example.com', $email_from_name)
                    ->subject($subject)
                    ->markdown('emails.customer.ticket.comment_added')
                        ->with([
                            'nickname' => $this->user->nickname,
                            'ticket_id' => $this->ticket->id,
                            'ticket_subject' => $this->ticket->subject,
                            'ticket_text' => $this->ticket_comments->text,
                        ]);
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我收到多封这样的电子邮件时,没有电子邮件客户端(Outlook、Thunderbird、Roundcube...)将这些电子邮件显示为线程/对话。所有客户端将每封电子邮件显示为“新电子邮件”线程/对话。

有什么规定,有些电子邮件是一个线程/对话,有些则不是?我如何告诉我的 Laravel 应用程序这些电子邮件是一个线程/对话?

我想,它只需要是相同的电子邮件主题,但它不起作用。

email email-threading laravel laravel-5

1
推荐指数
1
解决办法
2131
查看次数