是否可以使用 PHP 的 IMAP 功能更改电子邮件?
Is it possible to alter an email using PHP's IMAP functions?
我使用 PHP 的 IMAP 功能处理电子邮件没有问题,但是 我希望能够物理地更改消息 而且我只是不确定这是否可能。有人成功过吗?
即我希望能够更改主题行,或者我希望从 body 等
中永久删除签名或广告
到目前为止,我能看到的唯一方法是:
- 加载消息
- 收集所有的headers,等等
- 使用某种电子邮件 object 重新创建电子邮件并用旧数据填充它
- 改我想改的部分
- 删除原消息
- 保存新消息**
** 这是这里唯一未知的...你知道是否可以简单地将 new 消息保存到文件夹,或者是否需要通过SMTP?
如果我可以简单地保存,我是否需要担心消息的顺序号(文件夹上下文中的唯一 ID,简单整数),或者文件夹会根据指示的消息简单地 re-sort 发送日期?
任何见解将不胜感激!
标准 IMAP 扩展不支持 (IIRC) STORE 命令,但在 Hired IMAP 客户端中可用。但是我很难想象为什么您首先要使用 IMAP 执行此操作 - 对于我能想到的大多数情况,更改发送 MUA / MTA / MDA 上的消息更有意义
正如@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
中,并将根据内容类型进行适当编码。
希望对您有所帮助!
我使用 PHP 的 IMAP 功能处理电子邮件没有问题,但是 我希望能够物理地更改消息 而且我只是不确定这是否可能。有人成功过吗?
即我希望能够更改主题行,或者我希望从 body 等
中永久删除签名或广告到目前为止,我能看到的唯一方法是:
- 加载消息
- 收集所有的headers,等等
- 使用某种电子邮件 object 重新创建电子邮件并用旧数据填充它
- 改我想改的部分
- 删除原消息
- 保存新消息**
** 这是这里唯一未知的...你知道是否可以简单地将 new 消息保存到文件夹,或者是否需要通过SMTP?
如果我可以简单地保存,我是否需要担心消息的顺序号(文件夹上下文中的唯一 ID,简单整数),或者文件夹会根据指示的消息简单地 re-sort 发送日期?
任何见解将不胜感激!
标准 IMAP 扩展不支持 (IIRC) STORE 命令,但在 Hired IMAP 客户端中可用。但是我很难想象为什么您首先要使用 IMAP 执行此操作 - 对于我能想到的大多数情况,更改发送 MUA / MTA / MDA 上的消息更有意义
正如@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
中,并将根据内容类型进行适当编码。
希望对您有所帮助!