Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP IMAP转发电子邮件的简单方法_Php_Email_Imap_Php Imap - Fatal编程技术网

使用PHP IMAP转发电子邮件的简单方法

使用PHP IMAP转发电子邮件的简单方法,php,email,imap,php-imap,Php,Email,Imap,Php Imap,我正在编写一个脚本,将获得同一服务器上不同帐户中的所有新电子邮件,检查关键字,然后根据找到的关键字将每个电子邮件移动到该帐户中的不同帐户和文件夹。 我一直在寻找一种简单的方法将电子邮件从一个帐户移动到另一个帐户,并移动到该帐户中的文件夹。似乎没有简单的imap_forward()函数。imap_mail_move()仅在同一帐户内有效。我已经在互联网上搜索了几个小时,寻找一种方法来实现这一点,而不必像发送新电子邮件一样,在发送到目标地址之前循环浏览附件和获取电子邮件的每个部分。我需要确保在此过程

我正在编写一个脚本,将获得同一服务器上不同帐户中的所有新电子邮件,检查关键字,然后根据找到的关键字将每个电子邮件移动到该帐户中的不同帐户和文件夹。
我一直在寻找一种简单的方法将电子邮件从一个帐户移动到另一个帐户,并移动到该帐户中的文件夹。似乎没有简单的imap_forward()函数。imap_mail_move()仅在同一帐户内有效。我已经在互联网上搜索了几个小时,寻找一种方法来实现这一点,而不必像发送新电子邮件一样,在发送到目标地址之前循环浏览附件和获取电子邮件的每个部分。我需要确保在此过程中没有信息丢失,并且电子邮件到达目的地时与最初收到的完全相同。只要附件(发件人地址和正文)完好无损,它可以看起来像一封转发的邮件。

如果您还具有对目标邮箱的IMAP访问权限,则可以同时打开两个IMAP连接。使用一个连接从源帐户读取邮件,使用另一个连接将邮件发送到目标帐户

您必须手动重新构建消息头,但这应该非常简单,看起来您可以这样做:

$newMessage = imap_headers($sourceStream) . "\r\n" . imap_body($sourceStream)
imap_append($destinationStream, $destinationMailbox, $newMessage);

您应该能够获取整个RFC822主体并重新加载它(不获取任何子部分)@Max我也这么认为,但我没有看到返回整个消息的函数。不清楚这是否是
imap\u body()
所做的。imap\u headers()返回邮箱中所有邮件的标题。我需要一个接一个地移动每条消息,以及相应的标题。对于每封电子邮件,这将如何工作??