3

我正在尝试为 Swift Mailer 4.3.0 中的所有邮件设置默认发件人,但找不到合适的解决方案。我想避免在每条消息中使用 ->setFrom() ,因为这将是一个未来的头痛。我可以为此使用一个常量,但我正在寻找一个更优雅的解决方案。

$message = Swift_Message::newInstance()
                ->setSubject('subject')
                ->setFrom(array('sender@domain.com' => 'Sender'))
                ->setTo(array('recipient@domain.com'))
                ->setBody('Message');

谢谢!

4

2 回答 2

4

你不能。

据我所知,你不能省略这个参数。

From:地址是必需的,并使用消息的方法设置setFrom()From:地址指定了电子邮件的实际编写者,通常是发送者。

这可能是最好的解决方案:

->setFrom(MyClass::FROM_EMAIL);

您可以尝试的一次是在您的应用程序中创建一个实例,并在您想要发送新邮件而不重新定义 from 部分时克隆它:

// somewhere early in your app
$message = Swift_Message::newInstance()
            ->setFrom(array('sender@domain.com' => 'Sender'));

然后,在其他地方:

$newMessage = clone $message;
$newMessage
    ->setSubject('subject')
    ->setTo(array('recipient@domain.com'))
    ->setBody('Message')
    ->send();
于 2013-03-14T12:41:19.167 回答
1

如果您使用 SwiftMailer ≥ 4 并且熟悉Composer,则可以使用 SwiftMailer 的Defaults Plugin来实现这一点。

首先安装软件包:

composer require finesse/swiftmailer-defaults-plugin

第二个设置Swift_Mailer实例:

$mailer = new Swift_Mailer(/* your transport here */);
$mailer->registerPlugin(new Finesse\SwiftMailerDefaultsPlugin\SwiftMailerDefaultsPlugin([
    'from' => ['sender@domain.com' => 'Sender']
]));

然后在不指定发件人地址的情况下发送电子邮件:

$mailer->send((new Swift_Message())
    ->setSubject('subject')
    ->setTo(array('recipient@domain.com'))
    ->setBody('Message'));
于 2017-10-07T05:50:48.053 回答