当电子邮件转发到Mailgun时,如何获取原始发件人的地址?
事件链如下所示:
换一种方式:
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>
必须有更好的方法来做到这一点,对吧? 提前谢谢!
答案 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(.*?)>