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

Re: CONTENIDO 4.10.2-dev cMailer und Swift Mailer

Verfasst: Di 22. Jul 2025, 08:03
von achiboy
Erst Mal: herzlichen Dank für eure Arbeit und euer Dranbleiben!

Stimmt das folgende Vorgehen, wenn ich dieses Update machen möchte, ohne die ganze Contenido-Version zu ersetzen:
- class.mailer.php ersetzen
- gesamter Ordner "swiftmailer" ersetzen

Re: CONTENIDO 4.10.2-dev cMailer und Swift Mailer

Verfasst: Di 22. Jul 2025, 09:27
von xmurrix
Hallo achiboy,

Die wichtigen Merge-Requests bezüglich der Änderungen am Swift-Mailer waren folgende:
- https://github.com/CONTENIDO/CONTENIDO/pull/478
- https://github.com/CONTENIDO/CONTENIDO/pull/479
- https://github.com/CONTENIDO/CONTENIDO/pull/519

Zusammengefasst kann ich sagen, dass das Austauschen folgender Dateien/Ordner ausreichend sein sollte:
- contenido/classes/class.mailer.php
- contenido/classes/swiftmailer/
- contenido/includes/include.mail_log.php
- contenido/plugins/form_assistant/classes/class.pifa.form.php
- data/config/production/config.autoloader.php (hier sollte man prüfen, ob es Änderungen an der Konfiguration der Swift-Mailer-Klassen gibt)