【问题标题】:Getting the original sender when forwarding emails转发电子邮件时获取原始发件人
【发布时间】:2019-12-06 15:13:55
【问题描述】:

当邮件被转发到 Mailgun 后,如何获取原始发件人的地址?

事件链如下所示:

  1. originalSender 向 someUser 发送消息
  2. someUser 将消息转发到 Mailgun
  3. Mailgun 将解析后的消息发布到我的服务器

换一种说法:

orignalSender (send)->  someUser (forward)->  mailgun (POST)->  myserver

我能得到的最好的结果就是在“body-plain”属性上做一个正则表达式。
问题是电子邮件客户端发送的方式不同。这里有两个例子。

从 GMail 转发(我添加了 ...):

body-plain: "---------- Forwarded message ----------\r\nFrom: Kalle Kalleson <kalle.kalleson@mail.com>\r\nDate: 2014-02-13\r\n ..."

从 Apple 邮件转发(我添加了 ...):

body-plain: "(...)Begin forwarded message:\r\n\r\n> From: Kalle Kalleson <kalle.kalleson@mail.com>\r\n> Subject: New color printer\r\n> Date: 11 February, 2014 15:47:19 GMT+1\r\n> 

一定有更好的方法来做到这一点,对吧?
提前致谢!

【问题讨论】:

    标签: mailgun


    【解决方案1】:

    我刚刚与 Mailgun 支持部门取得了联系,他们无法提供不同的策略。
    也就是说,自己解析正文,考虑到电子邮件客户端之间的差异。
    我会说跛脚,:-(

    您可以在此处对功能请求进行投票。
    http://mailgun.uservoice.com/forums/156243-general/suggestions/5528656-extract-the-original-sender-of-a-forwarded-email

    有没有人想出更好的答案?

    【讨论】:

      【解决方案2】:

      也许我错过了您要查找的内容,但是当 Mailgun POST 到您的服务器时,您应该能够从 POST 数据中提取 From 字段。我正在使用 node.js 应用程序来解析我的消息,但是,在 PHP 中它看起来像:

      <?php
          $from = $_POST["From"];
          echo "This message is from: ".$from;
      ?>
      

      如果我错过了您的要求,我深表歉意。

      【讨论】:

      • 使用我的示例,from 字段将提供 someUser,而我想要的是 originalSender。您缺少转发步骤。
      【解决方案3】:

      无论哪种情况,使用正则表达式都可以解决问题。 试试:

      /(From:.*>)/g
      

      【讨论】:

      • 这对于那些(令人难以置信的愚蠢)本地化 From: 转发消息中的标头名称的客户端来说会失败。您必须匹配 /^(From|Lähettäjä|Från|Fra|Aa?n|De|...):/ 之类的内容(显然不完整;无法快速搜索此正则表达式的相当全面的版本)。
      • 无论您使用什么正则表达式方言,/g 标志在这里都没有意义。您只想找到第一个匹配项。此外,贪婪的.* 可能应该更改为非贪婪的[^&gt;]*。
      • 感谢@tripleee 的输入,我不知道!
      【解决方案4】:

      不可能将电子邮件的原始发件人丢给任何邮件服务。

      所以,我们实现了正则表达式,并从邮件 html 正文中获取匹配的第一次出现。

      Regex.Match 仅返回第一个匹配项,因此将其与下面的正则表达式一起使用。

      From:\s(.*?)>
      

      https://regex101.com/r/1pUpPU/1

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-25
        • 1970-01-01
        • 2017-06-11
        • 2013-09-16
        • 2012-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多