Swiftmailer显示模板内容两次

时间:2016-01-05 03:56:03

标签: php email swiftmailer yii2-basic-app

我有这样的控制器:

$mail = Yii::$app->mailer->compose(['html'=>'@app/mail/layouts/html',],['content'=>$_POST["msg"]])
   ->setFrom([Yii::$app->params['admin_email']=>Yii::$app->params['admin_name'])
   ->setTo($_POST["to"])
   ->setSubject($_POST["subject"]);
$mail->send();

在我的邮件模板中,位于@app/mail/layouts/html

<?php $this->beginBody() ?>
This is Email Introduction
<?= $content ?>
<?php $this->endBody() ?>

已成功发送电子邮件,但是当我要检查生成两次的收件箱"This is Email Introduction"时。您可以查看my latest message here

我的收件箱会收到如下消息:

This is Email Introduction 
This is Email Introduction 
ini pesan Pesan ke dua

我的代码有问题吗?

1 个答案:

答案 0 :(得分:0)

我很抱歉,我找到了答案。这是@app/config/web.php部分的配置component's

    'components'=>[
        'mailer' => [
           'class' => 'yii\swiftmailer\Mailer',
           'viewPath' => '@app/mail',
           'useFileTransport' => false,
           'transport' => [
              'class'=>'Swift_SmtpTransport',
              'host'=>'host.domain.tld', //sample
              'username'=>'my@emaul.com', //sample email
              'password'=>'~!@#$%%^&&', // sample password
              'port'=>'465',
              'encryption'=>'ssl',
           ],
       ],
    ],

我忘记了此部分'viewPath' => '@app/mail'作为Swiftmailer的主要布局,并在我们调用send()函数时发送。
所以当我们有这样的代码时:

$mail = Yii::$app->mailer->compose(['html'=>'@app/mail/layouts/html',],['content'=>$_POST["msg"]])
   ->setFrom([Yii::$app->params['admin_email']=>Yii::$app->params['admin_name'])
   ->setTo($_POST["to"])
   ->setSubject($_POST["subject"]);
$mail->send();

部分['html'=>'@app/mail/layouts/html']告诉我们将使用 VIEW