我用 PHP和Symfony 2 开发了一个几乎完美的API,它在我的邮件服务器的帮助下发送电子邮件: sendmail 。我的问题是,我可以使用简单的文本和简单的HTML发送电子邮件,但是当我有类似的内容时:<h1 style="color:red;">HI</h1>
在身体我没有收到邮件。 当我有符号“时,我已经解决了这个问题。但是这会让我产生另一个问题,并且收到的HTML代码很糟糕。我在互联网上搜索但是我找不到有同样问题的人。
这是我的代码:
public function api_send_email($from,$to,$token,$subject,$content, $from_email_id, $to_email_id)
{
$list_unsubscribe = $this->container->get('router')->generate('api_mod_com_unsubscribeOne', array(
'fsUserId' => $from_email_id,
'toEmail' => $to_email_id
));
$from = $from." <info@fidelsys.eu>";
$headers = "From: ".$from."\r\n";
$headers .= "To: ".$to."\r\n";
$headers .= "Subject: ".$subject."\r\n";
$headers .= 'Content-Type: text/html;charset=utf-8'."\r\n";
$headers .= 'MIME-Version: 1.0'."\r\n";
$headers .= "List-unsubscribe: ".$list_unsubscribe."\r\n";
$headers .= "X-Mailer: PHP/" . PHP_VERSION;
$headers .= "\r\n";
$headers .= $content."\r\n";
// debugg
mail("dev2.fidelsys@mail.ru","tests", $headers );
$cmd = 'echo "'.$headers.'" | sendmail -t -N \'success,failure\' -V '.$token;
shell_exec ( $cmd );
我已经解决了问题:
$content = addslashes($content);
但我收到的链接断开的电子邮件以及代码如下所示:
<td align=\"left\" valign=\"top\" style=\"color:#606060;font-family:Helvetica,Arial,sans-serif;font-size:15px;line-height:150%;padding-top:10px;padding-right:40px;padding-bottom:40px;padding-left:40px;text-align:left\">
使用addslashes函数是正常的。 PS:我在服务器或symfony日志中没有任何错误。如果我删除了addslashes函数,我的邮件会消失。