是否可以使用php的IMAP函数修改电子邮件?


Is it possible to alter an email using PHP's IMAP functions?

我使用PHP的IMAP函数处理电子邮件没有问题,但是我希望能够物理地更改消息,我只是不确定这是可能的。有人在这方面取得过成功吗?

。我希望能够更改主题行,或者我想永久地从正文中删除签名或广告等。

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

  1. 加载消息
  2. 收集所有的头文件,等等
  3. 使用某种电子邮件对象重新创建电子邮件,并填充旧数据
  4. 改变我想改变的部分
  5. 删除原消息
  6. 保存新消息**

**这是这里唯一的未知…您知道是否可以简单地将消息保存到文件夹中,还是需要通过SMTP接收?

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

任何见解将不胜感激!

正如@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。汇票的文件夹…

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中,并将根据内容类型进行适当的编码。

希望有帮助!

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

上的消息会更有意义。