Jak správně vložit přílohu do mailu

jAkErCZ
Člen | 321
+
0
-

Zdravím,
Pokouším se přidat přílohu k mailu. Vím že mohu přílohu uložit a poté předat cestu pomocí ->addAttachment
Jenže já se snažím udělat to že se příloha vytvoří jakoby virtuálně a poté se do mailu přidá a odešle tak aby se nikam nemusela ukládat ale jak na to?

Zde mám funkci která mi stáhne vygenerované pdf

public function renderPdf($complaint_id){
    // Vytváření šablony pro PDF.
    /** @var Template $template */
    $template = $this->createTemplate();
    $template->setFile(dirname(__FILE__) . self::PDF_TEMPLATE);

    $complaint = $this->fillTemplateWithOrderDetail($template, $complaint_id);

    // Render PDF.
    $mPdf = new mPDF();
    $mPdf->WriteHTML($template, 2);

    // Return PDF.
    $mPdf->Output('Reklamační protokol_R' . $complaint['complaint_number'] . '.pdf', 'D');
    $this->terminate();
}

Ale teď přemýšlím jak udělat funkci která mi vrátí pdf přílohu a odešlu mailem.

public function renderPdftoMail($complaint_id){
    // Vytváření šablony pro PDF.
    /** @var Template $template */
    $template = $this->createTemplate();
    $template->setFile(dirname(__FILE__) . self::PDF_TEMPLATE);

    $complaint = $this->fillTemplateWithOrderDetail($template, $complaint_id);

    // Render PDF.
    $mPdf = new mPDF();
    $mPdf->WriteHTML($template, 2);

    // Return PDF.
    $mPdf->Output("", "S");
}

Přemýšlel sem nějak takto dle nějakých rad na internetu jenže to mi nic nevrací…

 $pdf = $this->complaintPresenter->renderPdftoMail($id);

->addAttachment($pdf.'.pdf');

Vím že to dělám nejspíš blbě ale jak na to?

Díky

jiri.pudil
Nette Blogger | 1028
+
+2
-

Předej obsah explicitně jako druhý argument – díky tomu se použije přímo, z žádného souboru už se nic nenačítá a první argument slouží už jen kvůli pojmenování přiloženého souboru v e-mailu.

$message->addAttachment('nazev_prilohy.pdf', $content)
David Matějka
Moderator | 6445
+
+3
-

addAttachment ma druhy parametr content, kde muzes dat obsah toho souboru.

Sitole
Člen | 39
+
+1
-

Metoda při přidání souboru do mailu má více parametru. Můžeš se podívat do dokumentace. https://api.nette.org/…age.php.html#…

První parameter bude prázdný string a jako druhy parametr bude obsah souboru (PDF). Jinak není úplně dobre renderovat PDF v presenteru. Raději udělej logiku v modelu.

jAkErCZ
Člen | 321
+
0
-

Díky všem za pomoc :)

CZechBoY
Člen | 3608
+
0
-

@Sitole dokumentace je tady https://doc.nette.org/cs/mail#…