Mailverlust bei asynchronem Mailversand mit größeren Anhängen
Moin,
ich muss über ein Formular aktuell Mails mit größeren Anhängen bis 20MB verschicken. Entsprechend große Mailanhänge sind für den Mailprovider kein Problem. Leider braucht der Versand aus Contao sehr lang, weshalb ich das gerne asynchron lösen möchte. Die Mails werden über das Notification Center verschickt. Aktuell habe ich aber den Verdacht, dass es nicht mit dem Notification-Center zusammen hängt, da die Vorverarbeitung bis zum Schreiben in die Datenbank in jedem Fall funktioniert.
In der Dokumentation gibt es dazu den Eintrag "Asynchrone E-Mails mit Symfony Mailer".
https://docs.contao.org/manual/de/system/einstellungen/
Nach der Installation des symfony/messenger und der Anpassung in der config.yaml funktionieren E-Mails ohne Anhang auch wunderbar.
Code:
framework:
messenger:
transports:
async: 'doctrine://default'
routing:
'Symfony\Component\Mailer\Messenger\SendEmailMessage': async
Verschicke ich die Mails mit kleineren Anhängen funktioniert das Ganze auch wunderbar. Verschicke ich Mails mit Anhängen von knapp 10 MB verschwinden diese aber im Nirvana.
Ich sehe in jedem Fall nach dem Abschicken einen entsprechenden Eintrag in der Tabelle "messenger_messages" meiner MySQL-Datenbank.
Rufe ich nun folgenden Befehl auf, verschwindet der Eintrag aus der Datenbank auch wieder.
Code:
php vendor/bin/contao-console messenger:consume --verbose --time-limit=60 async
Leider kommt aber nichts an. Eine Fehlermeldung erhalte ich leider nicht, auch nicht im Contao-Logfile. Auch Testmails an mail-tester.com kommen mit größeren Anhängen nicht durch.
Hat jemand eine Idee, wo die Mails hängen geblieben sein könnten?
Danke und
beste Grüße
Dennis
Liste der Anhänge anzeigen (Anzahl: 1)
Danke für den Hinweis. Hier findet sich tatsächlich eine Mail, die nicht zugestellt werden konnte, was aber auf einen Fehler meinerseits zurück zu führen ist.
Inzwischen tippe ich aber immer mehr auf ein Problem mit dem Notification Center [2.2.6]. Hier lässt sich auf dem Testsystem ein Fehler sehr gut reproduzieren.
Zur Kontrolle: Über folgenden Code lässt sich problemlos eine Mail mit Anhängen über 40MB verschicken.
PHP-Code:
<?php
namespace App\Command;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Style\SymfonyStyle;
use Contao\CoreBundle\Framework\ContaoFramework;
use Contao\System;
use Contao\Email;
#[AsCommand(
name: 'bm:mailtest',
description: 'Test emails with large attachements.',
)]
class MailtestCommand extends Command
{
private string $projectDir;
public function __construct(
private readonly ContaoFramework $framework
) {
$this->framework->initialize();
$this->projectDir = System::getContainer()->getParameter('kernel.project_dir');
parent::__construct();
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$emailAddress = '**********';
$email = new Email();
$email->subject = 'Testmail';
$email->text = 'This is a mail with large attachements.';
$email->attachFile($this->projectDir . '/files/uploads/IMG20250207123602.jpg');
$email->attachFile($this->projectDir . '/files/uploads/IMG20250207123809.jpg');
$email->attachFile($this->projectDir . '/files/uploads/IMG20250207125846.jpg');
$email->attachFile($this->projectDir . '/files/uploads/IMG20250207133648.jpg');
$email->attachFile($this->projectDir . '/files/uploads/IMG20250207133707.jpg');
$email->attachFile($this->projectDir . '/files/uploads/IMG20250207134908.jpg');
$email->sendTo($emailAddress);
$io = new SymfonyStyle($input, $output);
$io->success('Email sent to: ' . $emailAddress);
return Command::SUCCESS;
}
}
Nun nehme ich die selben Dateien, und hänge sie über "Anhänge" in die Nachricht im Notification Center.
Anhang 27692
Wenn ich nun das Formular abschicke, erhalte ich im LOG folgende Fehlermeldung:
Zitat:
The parcel could not be delivered via the "mailer" gateway because of an internal issue: There is no active transaction..
Hänge ich nur ein Bild in den Anhang, sodass die Mail die 10MB nicht überschreitet, funktioniert es auch über das Notification Center.