Swift邮件程序默认发件人

时间:2013-03-14 12:24:01

标签: php swiftmailer

我正在尝试为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');

谢谢!

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:1)

如果您使用SwiftMailer≥4并且熟悉Composer,则可以使用Defaults Plugin进行SwiftMailer来实现此目的。

首先安装包:

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'));