如何在邮件编写方法中发送params yii2

时间:2018-01-11 20:51:55

标签: php yii2

我尝试使用layout\html.php邮件程序组件方法发送一个param($ id)来查看compose()。但我不知道如何得到它

代码:

$id = 1;
Yii::$app->mailer->compose('\layouts\html.php', ['id' => $id])
->setFrom('stackfrom@gmail.com')
->setTo('stackto@gmail.com')
->setSubject('Email sent from Yii2-Swiftmailer')
->send();

在我的视图布局\ html.php

的一行中

<div><?php echo $id ?></div>

Error is here!

2 个答案:

答案 0 :(得分:0)

Compose方法采用格式为'@ app / mail / layouts / default.php'的特殊别名 因此,如果您使用绝对格式,请使用@和path(yii2别名)

您可以在此处看到对swift邮件程序的引用:http://www.yiiframework.com/doc-2.0/yii-swiftmailer-mailer.html

答案 1 :(得分:0)

您不能使用compose()这样的方法调用视图文件,您应该使用alias,例如@common@frontend或与视图相关的任何其他内容在您尝试加载时,我们会在common/mail中放置与电子邮件相关的所有观看次数,因此我们会在示例中使用@common别名。

您可以使用2种方式

  1. 您可以将其他视图参数传递给compose()方法,该方法将在视图文件中提供。Yii::$app->mailer->compose('@common/path/to/view', ['id' => $id]);

  2. 单独呈现HTML

  3. $body =Yii::$app->view->renderFile('@common/path/to/view-file.php',['id'=>$id])

    HTML文件中呈现php,将任何您想要的参数传递给任何普通视图文件,然后使用setHtmlBody($body)将其附加到电子邮件正文,请使用以下命令方式

    $body = Yii::$app->view->renderFile ( '@common/mail/account-activation.php' , [
        'id' => $id 
            ] );
    
    Yii::$app->mailer->compose()
    ->setFrom('stackfrom@gmail.com')
    ->setTo('stackto@gmail.com')
    ->setSubject('Email sent from Yii2-Swiftmailer')
    ->setHtmlBody($body)
    ->send()
    

    如需更多帮助,请参阅Documentation