Skip to main content

Versenden einer Email nach der Validierung

Es ist möglich nach der Validierung eine Email zu versenden. 
Hier ein Beispiel wie dieser Versand realisiert werden kann:

<?php

// ========================================================
// UserExit after Validation
// ========================================================

use Squeeze\SqueezeConfig;
use Squeeze\xDoc;
use Squeeze\xTools;

function AfterValidation(xDoc $xDoc, string $nextStep, string $newStatus): ?array
{
    // Optional ein Logger Objekt erzeugen
    $logger = Logger::getLogger("main");

    // Initialisierung der Emailparameter
    $subject = 'Test after Validation'; // Betreff
    $to = ['test(at)test.de'];     // 1 - n Empfänger

    // Definition des Emailinhalts
    // HTML formatierte Emails sind ebenfalls möglich aber komplexer.
    $body = 'Hier der Nachrichtentext.';

    // Absoluten Pfad zum Dokument ermitteln
    // ggf. eine Exception erzeugen, wenn der Pfad nicht existiert
    $config = new SqueezeConfig();
    $repo = $config->get('repository.root');
    $absolutePath = xTools::buildAbsolutePath($repo, $xDoc->repoPath, false);
    if ($absolutePath === false) {
        $msg = "AfterValidation Input Folder (" . $repo . $xDoc->repoPath . ") does not exist.";
        $logger->error($msg);
        throw new Exception($msg);
    }

    // Initalisierung eines Arrays zur Speicherung der Anlagen
    $attachments = [];
    
    // Laden der PDFs und dem Array der Anlagen hinzufügen 
    $files = $xDoc->getBase64Files($absolutePath, 'Input', ['pdf']);
    foreach ($files->getResult() as $file) {
        if ($file->filename != '_result.pdf') {
            $attachments[] = $absolutePath . 'Input' . DIRECTORY_SEPARATOR . $file->filename;
        }
    }

    // Email senden und auf Fehler prüfen
    $result = xTools::sendEmail($subject, $to, $body, 'text', $attachments);
    if (!$result->isSuccess()) {
        throw new Exception($result->getMessage());
    }

    return ['xDoc' => $xDoc, 'nextStep' => $nextStep, 'newStatus' => $newStatus];
}