【问题标题】:imap headers of a quoted mail引用邮件的 imap 标头
【发布时间】:2011-08-26 07:16:29
【问题描述】:

我正在发送带有一些 xheader 的电子邮件。

当电子邮件的收件人重播该电子邮件时,我想对其进行解析,并从我通过重播获得的邮件中获取该 xheader 的内容。

不幸的是,当我解析收到的电子邮件时,我没有看到我的 xheader。 (我打印了整封邮件,xheader 不存在)

我如何在 PHP 中使用 Zend Framework 做到这一点(我正在使用 Zend_Mail_Storage_Imap)?

代码:

    $mail = new Zend_Mail_Storage_Imap(array(
    'host' => 'pop.gmail.com',
    'user' => 'a@gmail.com',
    'password' => 'a',
    'ssl' => 'SSL'
));
$count = $mail->countMessages();
$message = $mail->getMessage($count);   
print_r($message);

    //go through the message
    foreach(new RecursiveIteratorIterator($message) as $part){
        echo '*****************<br/>';
        print_r($part);
        echo '<br/>*****************<br/>';         
        //match parts content type to text/html - the one that maches is the message HTML body
        if (preg_match('/.*text\/html.*/', $part->contentType)){
            $body = $part->getContent();
        }

        $headers = $part->getHeaders();
        if (isset($headers['X-aHeader'])){
            echo $headers['X-aHeader'];
        }

谢谢, 鲍里斯。

【问题讨论】:

  • 您从哪里发送邮件?您确定其中一个邮件服务器没有删除标头吗?
  • 是的,我确定。我试图将邮件直接发送到解析邮件的邮箱,当我打印邮件时 - 标题就在那里。
  • 嗯..重播时使用的电子邮件服务器可能会删除它。我想我在那种情况下无事可做,对吧?
  • 如果它出现在目标框中,那么它应该在那里。但是,回复时肯定会丢失。我认为邮件客户端在回复时不包含标题。

标签: php zend-framework email imap email-headers


【解决方案1】:

Pekka 在这里获得正确回复的分数 - 原始消息中的 X 标头不一定会保留给对该消息的任何回复。但是,您使用的是 Gmail,因此您还有另一个可能的选择。

Gmail 允许 plus 寻址,因此 username@gmail.com 也会收到 username+extra@gmail.com 的邮件。如果您的 X-aHeader 内容是字母数字,您可以将其附加到您的电子邮件地址(例如 a+headerdata@gmail.com)。如果您的标头内容不是字母数字,我建议您在系统上本地缓存您放入标头的内容,并提供uniqid 作为电子邮件加-地址。当您收到回复时,您可以使用该uniqid 来查找您在本地缓存的数据。

这是一种常见的技术,用于唯一标识回复电子邮件或可能退回邮件的收件人。

【讨论】:

    猜你喜欢
    • 2021-09-21
    • 1970-01-01
    • 2018-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 2011-03-05
    • 2012-11-15
    相关资源
    最近更新 更多