Versandmethode Debug + background_job

  • Betroffene Version
    WoltLab Suite 5.2
    Betroffene App
    WoltLab Suite Core

    Setzt man die E-Mail-Versandmethode auf Debug (Ordner mit .eml-Dateien) (vermutlich tritt das Problem auch bei Debug (mbox) auf) landen die E-Mails trotzdem in wcf1_background_job und werden dann irgendwann doppelt als Debug-Datei erstellt.

    • Offizieller Beitrag

    Hallo,

    landen die E-Mails trotzdem in wcf1_background_job

    das würde ich erst einmal nicht per se als Fehler bezeichnen. Für einen synchronen Test des E-Mail-Layouts kann beispielsweise Email::debugDump() genutzt werden.

    und werden dann irgendwann doppelt als Debug-Datei erstellt.

    das wiederum schon. Wird dieselbe E-Mail tatsächlich doppelt im Maildir zugestellt?

  • Wieso landen die E-Mails übernoch in der wcf1_background_job, wenn man eine Debug-Versandmethode ausgewählt hat? Ich nutze diese lokal, um E-Mails auf die richtige Formatierung zu prüfen, da ich lokal keinen Mailserver habe und auch im ACP keinen externen angegeben habe.

    Die Debug-Versandmethoden erstellen mir dann die E-Mails direkt so, dass ich diese in Thunderbird auf Korrektheit prüfen kann. Wenn diese jetzt aber nach X Stunden dann nochmals im log-Verzeichnis landen, weil sie auch in der wcf1_background_job sind, ist das für mich sehr verwirrend, weil es alte E-Mails sind.

    • Offizieller Beitrag

    Hallo,

    Wieso landen die E-Mails übernoch in der wcf1_background_job, wenn man eine Debug-Versandmethode ausgewählt hat?

    Auch die Debug-Mailer versenden generell durch die Background-Queue, da diese nicht gesondert behandelt werden. Entsprechend ist es notwendig, dass die E-Mails in der Background-Queue landen, damit diese zugestellt werden können.

    Ich weiß natürlich nicht, was du in deinem eigenen Code machst, deine Fehlerbeschreibung ist leider nicht überaus präzise.

  • Beispielcode:

    PHP
            // send email to admins
            $mail = new SimpleEmail();
            $mail->setSubject("Gutschein-Code eingelöst");
            $mail->getEmail()->addRecipient(new Mailbox(MAIL_ADMIN_ADDRESS));
            $mail->setMessage("Gutscheincode \"{$this->discountCode}\" wird versucht einzulösen");
    
            // send mail immediately
            foreach ($mail->getEmail()->getJobs() as $job) {
                BackgroundQueueHandler::getInstance()->performJob($job);
            }

    Versandmethode: Debug (Ordner mit .eml-Dateien)

    Wird der Code nun ausgeführt, dann wird mir direkt nach dem Ausführen die E-Mail unter log/Maildir abgelegt. Jedoch ist der Job weiterhin in der wcf1_background_job Tabelle drin und wird dann zu einem späteren Zeitpunkt nochmals erstellt.

    Mir scheint hier der Eintrag nicht korrekt gelöscht zu werden?

    • Offizieller Beitrag

    Hallo,

    Wird der Code nun ausgeführt, dann wird mir direkt nach dem Ausführen die E-Mail unter log/Maildir abgelegt.

    So weit korrekt und nachvollziehbar.

    Jedoch ist der Job weiterhin in der wcf1_background_job Tabelle drin und wird dann zu einem späteren Zeitpunkt nochmals erstellt.

    Hier aber nicht mehr. Hast du zu einem späteren Zeitpunkt irgendwo noch ein ->send() in deinem Code?

    Mir scheint hier der Eintrag nicht korrekt gelöscht zu werden?

    Nicht zutreffend. Der Eintrag wird im Falle von performJob() gar nicht erst eingetragen. Lediglich, wenn der Versand eine Exception wirft, dann landet die E-Mail auch in der Datenbank-Tabelle.

  • Code
    O:52:"wcf\system\background\job\EmailDeliveryBackgroundJob":4:{s:8:"*email";O:22:"wcf\system\email\Email":10:{s:9:"*sender";O:24:"wcf\system\email\Mailbox":3:{s:10:"*address";s:14:"foo@foo.com";s:7:"*name";s:5:"chris";s:11:"*language";O:26:"wcf\data\language\Language":5:{s:8:"*items";a:0:{}s:15:"*dynamicItems";a:0:{}s:34:"wcf\data\language\Languageeditor";N;s:9:"packageID";i:8;s:7:"*data";a:7:{s:10:"languageID";i:1;s:12:"languageCode";s:2:"de";s:12:"languageName";s:7:"Deutsch";s:11:"countryCode";s:2:"de";s:9:"isDefault";i:1;s:10:"hasContent";i:0;s:10:"isDisabled";i:0;}}}s:10:"*replyTo";O:24:"wcf\system\email\Mailbox":3:{s:10:"*address";s:14:"foo@foo.com";s:7:"*name";N;s:11:"*language";r:6;}s:13:"*recipients";a:1:{s:14:"foo@foo.com";a:2:{s:4:"type";s:2:"to";s:7:"mailbox";O:24:"wcf\system\email\Mailbox":3:{s:10:"*address";s:14:"foo@foo.com";s:7:"*name";N;s:11:"*language";r:6;}}}s:12:"*messageID";s:40:"5371c948f4414536905f0b0f379a53f320d656f0";s:13:"*references";a:0:{}s:12:"*inReplyTo";a:0:{}s:7:"*date";O:8:"DateTime":3:{s:4:"date";s:26:"2020-10-19 07:42:05.000000";s:13:"timezone_type";i:1;s:8:"timezone";s:6:"+00:00";}s:10:"*subject";s:25:"Gutschein-Code eingelöst";s:15:"*extraHeaders";a:0:{}s:7:"*body";O:36:"wcf\system\email\mime\MimePartFacade":1:{s:11:"*mimePart";O:39:"wcf\system\email\mime\PlainTextMimePart":5:{s:11:"*template";s:15:"email_plaintext";s:14:"*application";s:3:"wcf";s:10:"*mailbox";r:26;s:10:"*content";s:45:"Gutscheincode "asd" wird versucht einzulösen";s:11:"*mimeType";s:10:"text/plain";}}}s:15:"*envelopeFrom";r:3;s:13:"*envelopeTo";r:26;s:57:"wcf\system\background\job\AbstractBackgroundJobfailures";i:1;}
  • Ich nutze Vagrant.

  • Tim Düsterhus 19. Oktober 2020 um 13:36

    Hat das Label 5.2.10 hinzugefügt.
  • Tim Düsterhus 19. Oktober 2020 um 13:36

    Hat das Label Behoben hinzugefügt.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!