1

我正在发送带有一些 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'];
        }

谢谢,鲍里斯。

4

1 回答 1

0

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

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

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

于 2012-04-16T19:52:46.977 回答