1

xheader を含むメールを送信しています。

メールの受信者がそのメールをリプレイしたら、それを解析して、リプレイで取得したメールからその xheader の内容を取得したいと考えています。

残念ながら、戻ってきたメールを解析しているときに、xheader が表示されません。(メール全体を印刷しましたが、xheader はありません)

Zend Framework (私は Zend_Mail_Storage_Imap を使用しています) を使用して PHP でそれを行うにはどうすればよいですか?

コード:

    $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 ではプラスのアドレス指定が許可されているため、username@gmail.com は username+extra@gmail.com のメールも受信します。コンテンツが英数字の場合X-aHeaderは、メール アドレスに追加できます (例: a+headerdata@gmail.com)。ヘッダーの内容が英数字でない場合は、ヘッダー入れる内容をシステムのローカルにキャッシュuniqidし、電子メールのプラスアドレスとして を提供することをお勧めします。返信を受け取ったら、それを使用してuniqid、ローカルにキャッシュしたデータを検索できます。

これは、電子メールに返信する受信者、またはメッセージをバウンスする可能性のある受信者を一意に識別するための一般的な手法です。

于 2012-04-16T19:52:46.977 に答える