引用邮件的 imap 标头

发布于 2024-11-07 19:13:47 字数 1249 浏览 0 评论 0 原文

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

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

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

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

代码:

    $mail = new Zend_Mail_Storage_Imap(array(
    'host' => 'pop.gmail.com',
    'user' => '[email protected]',
    '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'];
        }

谢谢, 鲍里斯。

I'm sending an email with some xheader.

When the recipient of the email replays to that email, i want to parse it, and get the content of that xheader from the mail i get by replay.

unfortunately, when i'm parsing the email i get back, i don't see my xheader.
(I printed the whole email, and the xheader is not there)

How can i do that in PHP with Zend Framework (i'm using Zend_Mail_Storage_Imap)?

Code:

    $mail = new Zend_Mail_Storage_Imap(array(
    'host' => 'pop.gmail.com',
    'user' => '[email protected]',
    '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'];
        }

Thanks,
Boris.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

思念满溢 2024-11-14 19:13:47

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

Gmail 允许加号寻址,因此[电子邮件受保护]还将收到 < a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="9eebedfbecf0fff3fbb5fbe6eaecffdef9f3fff7f2b0fdf1f3">[电子邮件受保护]。如果您的 X-aHeader 内容是字母数字,您可以将其附加到您的电子邮件地址(例如 [电子邮件受保护])。如果您的标头内容不是字母数字,我建议您在系统上本地缓存您要放入标头中的内容,并提供一个 uniqid 作为电子邮件加地址。当您收到回复时,您可以使用该 uniqid 查找本地缓存的数据。

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

Pekka gets points for the correct response here - X-headers in an original message will not necessarily be retained for any replies to that message. But, you're using Gmail, so you have another potential option.

Gmail allows plus addressing, so [email protected] will also receive mail for [email protected]. If your X-aHeader content is alphanumeric, you can append it to your email address (e.g. [email protected]). If your header content isn't alphanumeric, I'd recommend caching what you would put in the header locally on your system, and provide a uniqid as the email plus-address. When you receive a reply, you can use that uniqid to look up the data you cached locally.

This is a common technique for uniquely identifying recipients who reply to emails, or who perhaps bounce messages.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文