Seite 1 von 1

CONTENIDO 4.10.2-dev cMailer und Swift Mailer

Verfasst: So 25. Feb 2024, 14:53
von xmurrix
Hallo zusammen,

im aktuellen CONTENIDO Entwicklungszweig 4.10.2-dev (Stand 25.02.2024) gibt es folgende Änderungen bezüglich der verwendeten Swift Mailer Library und der cMailer Klasse:
  • Swift Mailer ist auf die Version 5.4.12 aktualisiert worden
  • Der Quellcode der neuen Swift Mailer Version wurde auf PHP 8 (bis einschließlich PHP 8.2) adaptiert
  • Die cMailer-Klasse unterstützt nun Datei-Anhänge, Beispiele siehe unten
E-Mails mit Dateianhang versenden:

Code: Alles auswählen

$mailer = new cMailer();
$mailer->addAttachment('/path/to/filename.ext');
$mailer->sendMail('sender@contenido.org', 'recipient@contenido.org', 'subject', 'some message');
E-Mails mit dynamischem Dateianhang versenden:

Code: Alles auswählen

// Create PDF on the fly
$data = create_my_pdf_data();
$mailer = new cMailer();
$mailer->addDynamicAttachment($data, 'my-file.pdf', 'application/pdf');
$mailer->sendMail('sender@contenido.org', 'recipient@contenido.org', 'subject', 'some message');

Re: CONTENIDO 4.10.2-dev cMailer und Swift Mailer

Verfasst: So 1. Jun 2025, 17:10
von bodil
Vielen Dank dafür!
Mir sind eben beim Einsatz allerdings 2 Deprecated-Meldungen aufgefallen, die ich mithilfe eines Workatounds aber abstellen konnte. Vielleicht ist der ja auch für andere hilfreich.
In beiden Fällen ging es um die Funktion call_user_func_array:
contenido/classes/swiftmailer/lib/classes/Swift/Message.php
Hier habe ich den Code

Code: Alles auswählen

          call_user_func_array(
            array($this, 'Swift_Mime_SimpleMessage::__construct'),
            Swift_DependencyContainer::getInstance()
                ->createDependenciesFor('mime.message')
            );
ersetzt durch

Code: Alles auswählen

list($headers, $encoder, $cache, $grammar, $charset) = Swift_DependencyContainer::getInstance()->createDependenciesFor('mime.message');
parent::__construct($headers, $encoder, $cache, $grammar, $charset);
contenido/classes/swiftmailer/lib/classes/Swift/SmtpTransport.php
Hier habe ich den Code

Code: Alles auswählen

        call_user_func_array(
            array($this, 'Swift_Transport_EsmtpTransport::__construct'),
            Swift_DependencyContainer::getInstance()
                ->createDependenciesFor('transport.smtp')
            );
ersetzt durch

Code: Alles auswählen

list($buf, $extensionHandlers, $dispatcher) = Swift_DependencyContainer::getInstance()->createDependenciesFor('transport.smtp');
parent::__construct($buf, $extensionHandlers, $dispatcher);