Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.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_Php_Email_Cakephp - Fatal编程技术网

如何转发邮件-php

如何转发邮件-php,php,email,cakephp,Php,Email,Cakephp,目前我直接从输入流中读取邮件,然后对其进行一些操作,然后我需要发送修改后的邮件 我已成功阅读并修改了邮件,现在可以将邮件作为原始邮件转发给用户 因此,我使用了邮件函数,但这个邮件函数以原始格式发送消息,因为我正在读取邮件并在正文中设置变量。如何使其成为看起来像一种格式的原始邮件(原始格式转换为实际邮件?) #/usr/bin/php-q 您可能需要在标题中指定电子邮件的格式: $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Conte

目前我直接从输入流中读取邮件,然后对其进行一些操作,然后我需要发送修改后的邮件

我已成功阅读并修改了邮件,现在可以将邮件作为原始邮件转发给用户

因此,我使用了邮件函数,但这个邮件函数以原始格式发送消息,因为我正在读取邮件并在正文中设置变量。如何使其成为看起来像一种格式的原始邮件(原始格式转换为实际邮件?)

#/usr/bin/php-q

您可能需要在标题中指定电子邮件的格式:

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

mail('you@yoursite.com','subject of the mail','"' . $email . '"',$headers);  
有一个简单的类-关于谷歌代码,你可以查看它。有了它,我认为从邮件中获取正文和标题将相当简单

$Parser = new MimeMailParser();
$fd = fopen("php://stdin", "r");
$Parser->setStream($fd);

$headers = $Parser->getHeaders();

$header = "";
$header .= "From: {$headers['from']}\r\n";
$header .= "Reply-To: {$headers['from']}\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: text/html; charset=iso-8859-1\r\n";

$email = $Parser->getMessageBody('html');
将它们放入单独的变量后,您可以按如下方式发送邮件:

mail('you@yoursite.com',$header['subject'],$email, $header);
这个解决方案并不是完美的方式,它只发送电子邮件的html部分,但它是您尝试新事物的一个良好开端。祝你好运


编辑:标题似乎存储为数组。您需要将它们转换为
mail
函数接受的格式。我已经更正了上面的代码。

为什么这里都有引号
““.$email.”“
您在
stdin
中阅读的电子邮件的格式是什么?@Ed Manet我已经删除了引号并对其进行了测试,邮件仍然是原始格式。您可能需要解析内容以获取标题,并将其与
邮件一起发送。”you@yoursite.com“,”邮件主题“,$email,$headers)
这与我说的一模一样-您需要正确解析邮件并从中提取邮件头(将邮件头和内容拆分为两个不同的变量,并将邮件头作为邮件函数中的不同参数传递)。不,它不起作用。当我分开邮件的标题和正文并发送时,邮件不会出现,有些地方出现了错误…你能给我们看一下邮件的两部分吗?或者自己检查一下正文和标题的格式是否正确。。Like body通过标题正确显示似乎以原始格式显示..我使用了{$email=$Parser->getMessageBody('text');}使用getHeadersRaw()而不是getHeaders()如何?我们什么时候使用getMessageBody('html')和getMessageBody('text')有什么标准吗,或者可以组合使用?
$Parser = new MimeMailParser();
$fd = fopen("php://stdin", "r");
$Parser->setStream($fd);

$headers = $Parser->getHeaders();

$header = "";
$header .= "From: {$headers['from']}\r\n";
$header .= "Reply-To: {$headers['from']}\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: text/html; charset=iso-8859-1\r\n";

$email = $Parser->getMessageBody('html');
mail('you@yoursite.com',$header['subject'],$email, $header);