Php 使用Laravel发送邮件时,请在邮件主题前缀前加上前缀

Php 使用Laravel发送邮件时,请在邮件主题前缀前加上前缀,php,laravel,Php,Laravel,如果我向Laravel发送这样的电子邮件: Mail::send('folder.view', $data, function($msg) { $msg->to('dest@email.com'); $msg->subject('email subject'); }); [Projectname] email subject /** * Set the subject of the message. * * @param string $subject

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

Mail::send('folder.view', $data, function($msg)
{
    $msg->to('dest@email.com');
    $msg->subject('email subject');
}); 
[Projectname] email 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;
}
我想扩展Laravel的核心类lightlight\Mail\Message.php 要像这样设置默认主题前缀,请执行以下操作:

Mail::send('folder.view', $data, function($msg)
{
    $msg->to('dest@email.com');
    $msg->subject('email subject');
}); 
[Projectname] email 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;
}

如何扩展核心类以避免使用编写器更新进行覆盖?

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

<?php

namespace my\namespace;

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

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

<?php

namespace my\namespace;

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

请随意接受克里斯的回答,因为他是正确的,我只是扩展了他所说的内容。Illumb\Mail\Message有一个设置主题的
subject()
方法。看起来是这样的:

Mail::send('folder.view', $data, function($msg)
{
    $msg->to('dest@email.com');
    $msg->subject('email subject');
}); 
[Projectname] email 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;
}
如果你像Chris在回答中说的那样扩展它,你可以像这样扩展它:

Mail::send('folder.view', $data, function($msg)
{
    $msg->to('dest@email.com');
    $msg->subject('email subject');
}); 
[Projectname] email 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\u name
configuration指令集。

请随意接受Chris的回答,因为他是正确的,我只是扩展他所说的内容。Illumb\Mail\Message有一个设置主题的
subject()
方法。看起来是这样的:

Mail::send('folder.view', $data, function($msg)
{
    $msg->to('dest@email.com');
    $msg->subject('email subject');
}); 
[Projectname] email 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;
}
如果你像Chris在回答中说的那样扩展它,你可以像这样扩展它:

Mail::send('folder.view', $data, function($msg)
{
    $msg->to('dest@email.com');
    $msg->subject('email subject');
}); 
[Projectname] email 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\u name
configuration指令。

这正是我所做的。我的类位于app/lib/Message.php中,app/lib也是自动加载的。但当我发送电子邮件时,我的主题仍然是一样的;没有前缀。我使用了卡尔·劳伦斯·鲁斯发布的方法。这正是我所做的。@HeikoK.,您可能还必须提供自己的
MailServiceProvider
和。您能提供完整的代码示例吗?Message类是MailServiceProvider的基础类。对不起,我有点糊涂了,头脑不清楚。我对拉威尔很陌生…:-/@HeikoK.,我目前没有一个Laravel项目可供测试。不幸的是,覆盖邮件功能似乎有些费事;没有邮资。正如我上面所说的,我相信您必须提供自己的
邮件服务提供商
来扩展Laravel服务提供商,还可能提供一个
邮件服务提供商
。然后你可以把它插到Laravel上这正是我做的。我的类位于app/lib/Message.php中,app/lib也是自动加载的。但当我发送电子邮件时,我的主题仍然是一样的;没有前缀。我使用了卡尔·劳伦斯·鲁斯发布的方法。这正是我所做的。@HeikoK.,您可能还必须提供自己的
MailServiceProvider
和。您能提供完整的代码示例吗?Message类是MailServiceProvider的基础类。对不起,我有点糊涂了,头脑不清楚。我对拉威尔很陌生…:-/@HeikoK.,我目前没有一个Laravel项目可供测试。不幸的是,覆盖邮件功能似乎有些费事;没有邮资。正如我上面所说的,我相信您必须提供自己的
邮件服务提供商
来扩展Laravel服务提供商,还可能提供一个
邮件服务提供商
。然后您可以使用将其插入Laravel。