是否可以使用PHP的IMAP功能更改电子邮件?

时间:2015-07-31 23:09:55

标签: php email smtp imap

使用PHP的IMAP功能处理电子邮件没有问题,但是我希望能够物理地改变消息,我只是不确定它是否可行。有没有人做过这样的成功?

即。我希望能够更改主题行,或者我想永久删除签名或来自正文的广告等。

到目前为止,我能看到的唯一方法是:

  1. 加载消息
  2. 收集所有标题等。
  3. 使用某种电子邮件对象重新创建电子邮件,并使用旧数据填充
  4. 更改我想要更改的部分
  5. 删除原始邮件
  6. 保存新邮件**
  7. **这是唯一未知的...你知道是否可以简单地将 new 消息保存到文件夹,还是需要通过SMTP接收?

    如果我可以简单保存,我是否需要担心邮件的订单号(文件夹上下文中的唯一ID,简单整数),或者文件夹是否会根据指示发送日期的消息重新排序?

    非常感谢任何见解!

2 个答案:

答案 0 :(得分:1)

正如@Max在OP评论中指出的那样,我正在寻找的IMAP功能是' APPEND'相应的PHP方法是http://php.net/manual/en/function.imap-append.php

语法为:bool imap_append ( resource $imap_stream , string $mailbox , string $message [, string $options = NULL [, string $internal_date = NULL ]] )

有关如何在参考页面评论中将消息附加到IMAP文件夹的示例,但基本示例如下:将消息添加到' INBOX.drafts'文件夹...

imap_append($stream, "{imap.example.org}INBOX.Drafts"
                   , "From: me@example.com\r\n"
                   . "To: you@example.com\r\n"
                   . "Subject: test\r\n"
                   . "\r\n"
                   . "this is a test message, please ignore\r\n"
                   );

... $stream是连接句柄。在我的情况下,我还想包含mime容器,它将包含在连接的$message中,并将根据内容类型进行适当编码。

希望有所帮助!

答案 1 :(得分:0)

STORE命令在标准IMAP扩展上不支持(IIRC),但在Hired IMAP客户端中可用。但是我很难想象你为什么要首先用IMAP做这个 - 对于我能想到的大多数场景,改变发送MUA / MTA / MDA上的消息会更有意义