【问题标题】:php imap foward / redirect account get original address (delivered-to)php imap foward / 重定向帐户获取原始地址(交付到)
【发布时间】:2013-07-14 13:29:41
【问题描述】:

我正在尝试使用 PHPIMAP 实现自动化。

我为数据库中的每个元素(例如签发票证)分配一个密钥,以便人们可以将带有附件的邮件发送到 myaccount+key@mycompany.com。使用 PHP 和 IMAP,我得到“密钥”,然后将正文和附件分配给分配了“密钥”的元素。

这很有效,除非有人想将通用电子邮件帐户自动重定向到分配的电子邮件地址。

所以,例如,我有:

Original sender: user1@example.com
Generic e-mail address: issues@alpha.com
Assigned key: 123456

他们配置为将issues@alpha.com 重定向到myaccount+123456@mycompany.com

当我使用 PHP 和 IMAP 检查myaccount@mycompany.com 并获取邮件时,我会得到发件人,但我想issues@alpha.com 并且我想get myaccount+123456@mycompany.com 以确定我必须将信息放在哪里。

我尝试了所有 PHP IMAP 函数,但尽管从 gmail 读取原始邮件,但我什么也没得到,我显示了一个 "Delivered-To" 字段,其中存储了 myaccount+123456@mycompany.com

我怎样才能得到交货字段?

非常感谢。

问候!

【问题讨论】:

  • 获取标头,通过标头/MIME 解析器运行它们,然后提取 Delivered-To 字段。

标签: php imap


【解决方案1】:

你可以使用这个php函数

imap_fetchheader ( resource $imap_stream , int $msg_number [, int $options = 0 ] )

但这将返回电子邮件的整个标题。

这是一个例子,我如何解析 Delivered-To:

  • $this->connection 是连接到 imap
  • $i 是消息数(测试时可以使用 1)

例子

$headers = explode("\n", imap_fetchheader($this->connection, $i));
$head = array();
foreach($headers as $key => $header) {
    $data = explode(":", $header);
    if( count($data) == 2 && !isset($head[$data[0]])) {
        $head[trim($data[0])] = trim($data[1]);
    }
}

在 $head['Delivered-To'] 中将是您的地址。

【讨论】:

    猜你喜欢
    • 2013-03-19
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    • 2018-10-29
    • 2018-09-18
    • 2014-11-30
    相关资源
    最近更新 更多