使用Laravel发送邮件时,前置电子邮件主题前缀

时间:2013-12-30 22:04:46

标签: php laravel

如果我发送电子邮件与Laravel这样:

Mail::send('folder.view', $data, function($msg)
{
    $msg->to('dest@email.com');
    $msg->subject('email subject');
}); 

我想扩展Laravel的核心类 Illuminate \ Mail \ Message.php 设置默认主题前缀,如下所示:

[Projectname] email subject

如何扩展核心类以避免使用作曲家更新进行覆盖?

2 个答案:

答案 0 :(得分:1)

子类Message并将您的代码放入不同的命名空间和文件中:

<?php

namespace my\namespace;

class MyMessage extends Illuminate\Mail\Message
{
    // ...
}

答案 1 :(得分:1)

随意接受克里斯的答案,因为他是正确的,我只是延伸他说的话。 Illuminate \ Mail \ Message有一个subject()方法,用于设置主题。它看起来像这样:

/**
 * Set the subject of the message.
 *
 * @param  string  $subject
 * @return \Illuminate\Mail\Message
 */
public function subject($subject)
{
    $this->swift->setSubject($subject);

    return $this;
}

如果你像克里斯在答案中所说的那样扩展它,你可以像这样扩展它:

public function subject($subject)
{
    $this->swift->setSubject('[' . Config::get('app.project_name') . '] ' . $subject);

    return $this;
}

假设您设置了app.project_name配置指令。