Odesílání uploadovaných souborů mailem – název přílohy?
- net-vor
- Člen | 35
Ahoj, pár vláken k tomuto tématu je (třeba tady),
ale stále se mi nedaří dosáhnout toho, abych odeslal z formuláře
uploadovaný soubor jako přílohu mailu a mohl si určit vlastní název
souboru (jinak přiložit tmpName v surové podobě jde). Zkoušené
metody:
1.
$mail->addAttachment("muj-vlastni-nazev.jpg", $values['file']->getContents());
vyhazuje, že soubor ‚muj-vlastni-nazev.jpg‘ nenalezen; podle dokumentace má být první parametr zdrojový soubor, takže chyba celkem dává smysl
2. kostrbaté (soubor se nejdříve překopíruje, přiloží a pak smaže)
$file = $form->values['file'];
$newFile = $_SERVER['DOCUMENT_ROOT'] . "/soubory/" . $file->name;
$file->move($newFile);
$mail->addAttachment($newFile);
unlink($newFile);
vyhazuje obskurní
warning rename(,E:/Dokumenty/net-vor/klient/preklady/soubory/): No error
na localhostu (Win7 SP1) i na produkci (Linux s PHP 5.3).
Zajímavé je, že soubor se skutečně vytvoří a přejmenuje, potuď to funguje… to je ale vše.
Tuší někdo, jak na to?
(Nette dev2.0 pro 5.3)
Editoval net-vor (17. 5. 2011 11:48)
- net-vor
- Člen | 35
Tak jsem na to přišel – důležité bylo testovat pomocí
$file->isOK()
, jestli se upload vůbec uskutečnil. Příloha
s vlastním jménem se pak přidá pomocí
$file = $form->values['file'];
if ($file->isOK())
$mail->addAttachment($file->name, $file->getContents());
První parametr je skutečné jméno uploadovaného souboru, druhý je potom jeho content. Občas se to tvářilo, že to uploadovalo soubory, které to ve skutečnosti neuploadovalo, tak do těch metod chodily prázdné parametry a proto ty chyby. Kdyby to někdo další řešil…
Editoval net-vor (18. 5. 2011 12:47)