我需要发送电子邮件,但我已经生成了HTML,我不想使用laravel blade,因为我需要将CSS内联器应用于HTML,所以这就是我生成html的方法:
getRenderedView($viewData) {
//code
$html = View::make('email.notification', $viewData)->render();
$this->cssInliner->setCSS($this->getCssForNotificationEmail());
$this->cssInliner->setHTML($html);
return $this->cssInliner->convert();
}
因此,要使用Laravel发送邮件,您通常会执行以下操作:
Mail::send('emails.welcome', $data, function($message)
{
$message->to('foo@example.com', 'John Smith')->subject('Welcome!');
});
但是我不想传递视图,我已经有了html,我该怎么做?
答案 0 :(得分:13)
如果我想要实现的目标是正确的,为了解决这个问题,我创建了一个名为echo.php的视图,其中只有echo $ html。
将你的html分配给$ data ['html']。
然后将$ data ['html']传递给echo视图。
Mail::send('emails.echo', $data, function($message)
{
$message->to('foo@example.com', 'John Smith')->subject('Welcome!');
});
让我知道你是怎么过的。
答案 1 :(得分:1)
封盖无法接触到身体。
您可以手动创建swift消息:
$message = \Swift_Message::newInstance();
$message->setFrom($messageToParse->template['fromEmail']);
$message->setTo($messageToParse->to['email']);
$message->setBody($messageToParse->body);
$message->addPart($messageToParse->body, 'html contents');
$message->setSubject('subject');
但是你需要创建传输:
$mailer = self::setMailer( [your transport] );
$response = $mailer->send($message);
答案 2 :(得分:1)
我想分享一个可能有助于在没有" blade"发送电子邮件的提示。
Laravel Mail函数实际上是Swift的包装器。 只需将空数组分配给$ template和$ data,我的意思是函数的前2个参数,然后在回调中进行其余的操作。
#fb {
z-index: 999999;
bottom: 70px;
right: 220px;
}
#twitter {
z-index: 999999;
bottom: 70px;
right: 220px;
}
答案 3 :(得分:0)
$data = array( 'email' => 'sample@domail.com', 'first_name' => 'Laravel',
'from' => 'sample@domail.comt', 'from_name' => 'learming' );
Mail::send( 'email.welcome', $data, function( $message ) use ($data)
{
$message->to( $data['email'] )->from( $data['from'],
$data['first_name'] )->subject( 'Welcome!' );
});
答案 4 :(得分:0)
在您的控制器中:
import { ServiceProvider} from '../../providers/service-provider';