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

試してみることができるのは、アプリケーションでインスタンスを1回作成し、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のデフォルトプラグインを使用してこれを実現できます。

最初にパッケージをインストールします。

composer require finesse/swiftmailer-defaults-plugin

Swift_Mailer2番目にインスタンスを設定します。

$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 に答える