Html标签在Cakephp Mail中不起作用

时间:2015-12-23 11:18:41

标签: php cakephp cakephp-3.0 cakephp-2.3

我正在使用cakephp2.4.5&我创建了视图:

        <?php echo $this->Session->flash();?> <?php echo $this->Form->create('Feedback', array('controller' => 'Feedbacks', 'action' => 'sendmail'));
        echo $this->Form->email('mail',array('label' => false,'required' => true,'class'=>'form__in form__in--text form-control','placeholder'=>__('E-mail'),'div'=>false));
        echo $this->Form->textarea('message',array('label' => false,'required' => true,'class'=>'form__in form__in--textarea form-control','placeholder'=>__('Message'),'div'=>false));
        echo $this->Form->submit('Send', array('label' => 'Send', 'class' => 'form__submit', ));
        echo $this->Form->end();?>

创建控制器:

public function sendmail() {
$usertopic = "Form";
$useremail = $this->data['Feedback']['mail'];
$usermessage = $this->data['Feedback']['message'];


$message = '<b>Hi:</b>' . $usermessage . "\r\n" . '<b>Your Message is:</b> ' . $useremail;

if(CakeEmail::deliver('example@gmail.com', $usertopic, $message, array('from' => $useremail)))
{
 $this->Session->setFlash(__('Your Feedback has been sent'),'flash',array('alert'=>'success'));
 return $this->redirect(array('controller'=>'pages','action'=>'index'));
}

输出

<b>Hi:</b> XYZ 
<b>Your Message is:</b> Something

任何人都可以帮助我如何在邮件正文中发送没有这些HTML标记的电子邮件。任何建议都会提前感谢。

2 个答案:

答案 0 :(得分:2)

  

任何人都可以帮助我如何在邮件正文中发送包含这些HTML标记的电子邮件。

那是你的代码吗?猜不是因为它看起来并不像你一直在阅读它。

$message = '<b>Hi:</b>' . $usermessage . "\r\n" . '<b>Your Message is:</b> ' . $useremail;

您或其他人在那里添加了<b>标签!只需删除它们。

同样use templates,视频相关代码与控制器的混合非常难看。阅读有关CakeEmail类的文档。

答案 1 :(得分:0)

您正在使用快速方法发送cakePHP的电子邮件。使用标准方式发送电子邮件并设置电子邮件格式以解决HTML标记问题。试试这个..

public function sendmail() {
    $usertopic = "Form";
    $useremail = $this->data['Feedback']['mail'];
    $usermessage = $this->data['Feedback']['message'];

    $this->Email->sendAs = 'both';  // both = html + plain text (email format)
    $this->Email->to = 'example@gmail.com';
    $this->Email->subject = $usertopic;  
    $message = '<b>Hi:</b>' . $usermessage . "\r\n" . '<b>Your Message is:</b> ' . $useremail;

    if($this->Email->send($message)){
        $this->Session->setFlash(__('Your Feedback has been sent'),'flash',array('alert'=>'success'));
        return $this->redirect(array('controller'=>'pages','action'=>'index'));
    } 
}

希望这会有所帮助。