2014-02-14 35 views
2

如何将电子邮件转发到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 <[email protected]>\r\nDate: 2014-02-13\r\n ..." 

转发(我加了...):

body-plain: "(...)Begin forwarded message:\r\n\r\n> From: Kalle Kalleson <[email protected]>\r\n> Subject: New color printer\r\n> Date: 11 February, 2014 15:47:19 GMT+1\r\n> 

必须有一个更好的方式这样做,对吗?
在此先感谢!

回答

0

也许我很想念你是什么寻找,但是当Mailgun POSTs到你的服务器时,你应该能够从POST数据中拉出From字段。我使用node.js应用程序来解析我的消息,但是在PHP中它看起来像这样:

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

我很抱歉,如果我想念你在问什么。

+0

用我的例子中,'from'场会给_someUser_,而我要的是_originalSender_。您错过了转发步骤。 – alesch

0

在任何一种情况下,使用正则表达式都应该做到这一点。 尝试:

/(From:.*>)/g 
+0

这对于客户端(在令人难以置信的愚蠢)中本地化转发邮件中的From:标头名称失败。您必须匹配'/ ^(From |Lähettäjä|Från| Fra | Aa?n | De | ...):/'(显然不完整;不能快速搜索到这个正则表达式的相当全面的版本)。 – tripleee

+0

无论您使用哪种正则表达式,'/ g'标志在这里都没有意义。你只会想找到第一场比赛。贪婪的'。*'也许应该改成非贪婪的'[^>] *'。 – tripleee

+0

感谢您输入@tripleee,我不知道! –

相关问题