fájl csatolás, phpmailer
Sziasztok,
egy szerveren fut egy programom,amely naplo fájlt is készít. 3 MB-nál törli magát és én szeretném ha törlés előtt megkapnám csatolt fájlként amailben.
A fájlt megkapom, de mire csatolja phpmailer a fájlt 61-szer küldi el a levelet.
LÁttam elég összetett megoldásokat, de abban bízok, hogy a phpmailernek van egy függvénye ami figyeli a fájl tényleges feltöltését.
Segítsetek benne, köszönöm Gyula
Kód:
■ egy szerveren fut egy programom,amely naplo fájlt is készít. 3 MB-nál törli magát és én szeretném ha törlés előtt megkapnám csatolt fájlként amailben.
A fájlt megkapom, de mire csatolja phpmailer a fájlt 61-szer küldi el a levelet.
LÁttam elég összetett megoldásokat, de abban bízok, hogy a phpmailernek van egy függvénye ami figyeli a fájl tényleges feltöltését.
Segítsetek benne, köszönöm Gyula
Kód:
function naploMail() {
$mail = new PHPMailer(true);
$mail->From = "tamas.szabo##kukac##hu.bosch.com";
$mail->FromName = "GYBBON naplozas";
//$mail->SMTPSecure="tls";
//$mail->SMTPAuth =true;
$mail->Host ="msxsmtp.server.bosch.com";
//$mail->Host = "rb-smtp-int.bosch.com";
$mail->Mailer = "smtp";
$mail->Body = iconv("UTF-8", "iso-8859-2",$szoveg);
$mail->AltBody = "Helló";
$mail->Subject = "GYBBON-naplo";
$mail->AddAddress("gyetvang##kukac##gmail.com");
$mail->AddAttachment($file=Document::$ABS_PATH.'naplo.log');
return $mail->Send();
}
function naploz() {
global $NAPLOZAS;
global $HIBA;
global $NAPLO_MERET;
if($NAPLOZAS!==true)
return;
$par=func_get_args();
$szoveg="";
$melyseg=0;
tombImplode($par,$szoveg,$melyseg);
$file=Document::$ABS_PATH.'naplo.log';
try {
if (!file_exists($file) || (filesize($file)>$NAPLO_MERET)) {
if (file_exists($file)){
if (naploMail())
;
unlink($file);
}
...
azt gondoltam, hogy a sendMail akkor tér vissza ha sikerült a csatolás is már? de nem ez látszik
Bele írtam a kódba, nem tudom
Kód pontatlanság
Az általad szóvá tett hibák nagy részével tisztában voltam.
A GLOBAL változó nagyon kényszer megoldás volt azért használtam.
Az üres utasítást csupán azért raktam bele, mert azt hittem, hogy a PHPMAILER SendMail() függvény akkor tér vissza true értékkel, ha a levél elküldése sikeres, ez alatt azt is feltételeztem, hogy felcsatolja és elküldi a fájlt.
A HIBA az hogy a az emailt megkapom de a gmail-es fiókomba ugyanabban a percben 61-szer küldi el, és 1KB méeretű fájlokat csatol mind a 61-szer, holott a szóban forgó fájl egy darab 3 MB-os fájl.
Ha a fájl elérte a méretet törölnöm kell, csak szerettem volna előtte megkapni mailben.
Legközelebb érdemes lenne az
Ha lenne like, likeolnám :)
+1
Nem jól működik
Ezért fordultam hozzátok.
Van-e olyan függvény, amely figyeli, hogy a csatolás befejeződött-e, hogy csak azt követően, hívjam meg a sendMail függvényt?
van
Nálam ez csak logikailag
if (file_exists($file)){
A Send() függvény hívja meg
Send()
függvény hívja meg közvetve a privátAttachAll()
függvényt, ami akkor nem csatol semmit, ha bármelyik csatolmány kódolása sikertelen. Így elképzelhetőnek tartom, hogy valami olyan karakter kerül a logba, amit a(z alapértelmezettbase64encode()
) kódolófüggvény nem eszik meg.Send
Nagy segítség volt. Valószínűleg az általad írt észrevétel lesz a hiba forrása.