转发电子邮件时获取原始发件人

时间:2014-02-14 09:05:22

标签: mailgun

当电子邮件转发到Mailgun时,如何获取原始发件人的地址?

事件链如下所示:

  1. originalSender向someUser发送消息
  2. someUser将消息转发给Mailgun
  3. Mailgun将已解析的消息发布到我的服务器
  4. 换一种方式:

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

    我能得到的最好的就是对“身体平原”的财产进行正则表达 问题是电子邮件客户端确实以不同方式发送。这是两个例子。

    从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> 
    

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

4 个答案:

答案 0 :(得分:1)

我刚接触过Mailgun支持,他们无法提供不同的策略 也就是说,考虑到电子邮件客户端之间的差异,自己解析身体 Lame我会说, - (

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

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

答案 1 :(得分:0)

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

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

如果我错过了你的要求,我道歉。

答案 2 :(得分:0)

使用正则表达式应该可以解决这两种情况。 尝试:

/(From:.*>)/g

答案 3 :(得分:0)

无法让电子邮件的原始发件人抛出任何邮件服务。

因此,我们实现了正则表达式,并从邮件html正文中获取了匹配的第一个匹配项。

  

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

From:\s(.*?)>

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