Laravel 5.7使用Swift Mailer发送电子邮件。
默认情况下,所有已发送的电子邮件都将带有域Message-ID
(例如swift.generated
)的Message-ID: <90b9835f38bb441bea134d3ac815dd6f@swift.generated>
标头。
我想将域swift.generated
更改为例如my-domain.com
。
如何更改所有电子邮件?
答案 0 :(得分:0)
'domain' => 'yourdomain.com',
php artisan make:listener -e 'Illuminate\Mail\Events\MessageSending' MessageSendingListener
<?php
/**
* Set the domain part in the message-id generated by Swift Mailer
*/
namespace App\Listeners;
use Illuminate\Mail\Events\MessageSending;
use Swift_Mime_IdGenerator;
class MessageSendingListener
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param MessageSending $event
* @return void
*/
public function handle(MessageSending $event)
{
$event->message->setId((new Swift_Mime_IdGenerator(config('mail.domain')))->generateId());
}
}
protected $listen = [
// [...]
\Illuminate\Mail\Events\MessageSending::class => [
\App\Listeners\MessageSendingListener::class,
],
];
就这样,尽情享受吧! :)
答案 1 :(得分:0)
只是找到了一种更改消息ID中的@swift.generated
的正确方法。
将此代码添加到您的AppServiceProvider->boot()
方法中:
\Swift_DependencyContainer::getInstance()
->register('mime.idgenerator.idright')
->asValue(config('mail.domain'));
config('mail.domain')
是一个自定义配置项,因此您可以将其更改为所需的任何内容。
在Laravel 6中进行了测试,也许也可以在5. *版本中使用。
您还可以在此文件中找到许多有趣的配置:
vendor/swiftmailer/swiftmailer/lib/dependency_maps/mime_deps.php