【问题标题】:How to define email subject in email template如何在电子邮件模板中定义电子邮件主题
【发布时间】:2016-05-03 11:16:44
【问题描述】:

我有这样的电子邮件刀片:

<?php
$title = 'title';
$text   = 'text';
?>

@include('emails.layouts.general')

在 emails.layouts.general 中

<h1>{{$title}}</h1>
<p>{{$text}}</p>

我发送电子邮件如下:

$subject = 'some subject'

\Illuminate\Support\Facades\Mail::send($template, [],
    function ($m) {
    $m->to('test@test.com', 'test test')->subject($subject);
});

有人知道我如何在刀片中定义主题吗:

<?php
$subject = 'subject';
$title   = 'title';
$text    = 'text';
?>

并在发送电子邮件时设置此主题?

已编辑:

我需要类似的东西: 在电子邮件刀片中设置电子邮件主题:

<?php
$title   = 'title';
$text    = 'text';
$subject = 'subject';
Mail::setEmailSubjectForNextEmail($subject);
?>

@include('emails.layouts.general

或在控制器中:

$subject = somehowGetSubjectVariableFromTemplate($template);

\Illuminate\Support\Facades\Mail::send($template, [],
    function ($m) use ($subject) {
    $m->to('test@test.com', 'test test')->subject($subject);
});

我想在刀片模板中设置主题变量,而不是在控制器中,因为我有超过 50 封电子邮件,我希望前端开发人员只使用刀片模板而不是控制器。

【问题讨论】:

  • 怎么样?主题在这里设置:->subject($subject);我需要以某种方式在模板中设置主题或从模板传递给控制器​​。
  • 您是否尝试过按照建议在刀片文件中使用{{$subject}}
  • 在语言文件中设置您的主题行,然后您可以将相同的值读入您的模板和控制器。然后,您可以将语言文件传递给您的前端人员,他可以在标签旁边填写复制文本
  • 我的问题的解决方案:我创建了自己的外观来发送邮件并将电子邮件主题和标题放在 lang 文件中......

标签: php laravel laravel-5 laravel-5.2


【解决方案1】:

尝试使用:

@php 
$message->setSubject('New subject');
@endphp

【讨论】:

    【解决方案2】:

    您需要将$subject 传递到回调和模板中。 subject 方法设置邮件主题行,它不会将其传递到电子邮件模板中

    $subject = 'Your Subject';
    
    Mail::send($template, ['subject'=>$subject,'other_thing'=>'what you like'], //this will pass it into the blade template
       function ($m) use($subject){ //you need to pass into the use clause to make the variable available in the scope of the callback
          $m->to('test@test.com', 'test test')->subject($subject); 
       }
    );
    

    您不需要在模板顶部为变量赋值,只要您将它们放入第二个参数的数组中,它们就可以使用。

    刀片模板:

    <div>{{$subject}}</div> <!-- "Your Subject" -->
    <span>{{$other_thing}}</span><!-- "what you like" -->
    

    【讨论】:

    • 我想在刀片模板中设置主题变量,而不是在控制器中,因为我有 50 多封电子邮件,我希望前端开发人员只使用刀片模板而不是控制器。
    • 我进行了编辑以使这一点更清楚,但这正是我所展示的。将其作为send 方法的第二个参数传递
    • 你在控制器中定义了主题,我知道这样做很热。
    • 您是说要将主题行硬编码到刀片模板中并将其传递给控制器​​吗?如果是这样,这是不可能的(不是没有一些可怕的 hack 解析刀片 html),你最好使用语言或配置文件并从那里读取值
    • lang 或配置文件可能是很好的解决方案,但有些主题会有变量,所以这不是选项。
    猜你喜欢
    • 1970-01-01
    • 2013-06-04
    • 2012-11-09
    • 2018-04-29
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    • 2020-08-31
    • 1970-01-01
    相关资源
    最近更新 更多