我尝试使用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>
答案 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种方式
您可以将其他视图参数传递给compose()
方法,该方法将在视图文件中提供。Yii::$app->mailer->compose('@common/path/to/view', ['id' => $id]);
单独呈现HTML
$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