如何转发邮件-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);