PDA

Zobacz pełną wersję : Adsmanager - Wysłanie maila z kilkoma załącznikami



p4w3k
29-07-2009, 12:02
Witam,

Chciałem zmodyfikować skrypt, aby wysyłać nie jeden, ale powiedzmy 2-3 załączniki mailem. Na razie mam coś takiego, niestety nie mogę osiągnąć zamierzonego efektu.


if ($_FILES['attach_file']['tmp_name'] != "")
{
$directory = ini_get('upload_tmp_dir')."";
if ($directory == "")
$directory = ini_get('session.save_path')."";
$filename = array($filename);

$plik1 = $_FILES['attach_file']['name'];
move_uploaded_file($_FILES['attach_file']['tmp_name'], $directory.$plik1);
$filename[] = $directory."/".$plik1;

$plik2 = $_FILES['attach_file2']['name'];
move_uploaded_file($_FILES['attach_file2']['tmp_name'], $directory.$plik2);
$filename[] = $directory."/".basename($_FILES['attach_file2']['name']);


$plik3 = $_FILES['attach_file3']['name'];
move_uploaded_file($_FILES['attach_file3']['tmp_name'], $directory.$plik3);
$filename[] = $directory."/".basename($_FILES['attach_file3']['name']);


rename($_FILES['attach_file']['tmp_name'], $filename);
rename($_FILES['attach_file2']['tmp_name'], $filename);
rename($_FILES['attach_file3']['tmp_name'], $filename);
mosMail($email,$name,$ad->email,$title,$body,1,NULL,NULL,$filename,$email,$c ontact);
}Pliki oczywiście załączam przez pole INPUT typu FILE w osobnym pliku.


<label for="body"><?php echo ADSMANAGER_ATTACH_FILE; ?></label><br />
<input id="attach_file" type="file" name="attach_file" /> <br />
<input id="attach_file2" type="file" name="attach_file2" />
<input id="attach_file3" type="file" name="attach_file3" />Jeśli zakomentuję wszystkie do obsługi 2giego i 3giego pliku, to mail wysyła się dobrze z pierwszym załącznikiem. W przeciwnym przypadku jest pusty :/ Czy ktoś może wskazać mi co robię źle?

Jola
29-07-2009, 19:30
Witam,
raczej $filename = Array();
Sprawdź zawartość końcową $filename - wyświetl ją sobie w pętli.
Pytanie - co masz zamiar robić z taką ilością plików na serwerze.
Ja pomyślałabym o ich usunięciu po wysłaniu emaila.
Pozdrawiam

p4w3k
29-07-2009, 23:12
if ($_FILES['attach_file']['tmp_name'] != "")
{
$directory = ini_get('upload_tmp_dir')."";
if ($directory == "")
$directory = ini_get('session.save_path')."";
$filename = Array();

$plik1 = $_FILES['attach_file']['name'];
move_uploaded_file($_FILES['attach_file']['tmp_name'], $directory.$plik1);
$filename[0] = $directory."/".$plik1;

$plik2 = $_FILES['attach_file2']['name'];
move_uploaded_file($_FILES['attach_file2']['tmp_name'], $directory.$plik2);
$filename[1] = $directory."/".basename($_FILES['attach_file2']['name']);


$plik3 = $_FILES['attach_file3']['name'];
move_uploaded_file($_FILES['attach_file3']['tmp_name'], $directory.$plik3);
$filename[2] = $directory."/".basename($_FILES['attach_file3']['name']);


rename($_FILES['attach_file']['tmp_name'], $plik1);

echo $filename[0] . $filename[1] . $filename[2];
//rename($_FILES['attach_file2']['tmp_name'], $filename);
//rename($_FILES['attach_file3']['tmp_name'], $filename);
mosMail($email,$name,$ad->email,$title,$body,1,NULL,NULL,$filename,$email,$c ontact);Hmm, jestem już dość zagubiony. Teraz dostaję maila bez jakiegokolwiek załącznika :/ Do tego polecenie echo nie zwraca żadnego wyniku.

Jola
30-07-2009, 00:01
Witam,

if ($_FILES['attach_file']['tmp_name'] != "" || $_FILES['attach_file2']['tmp_name'] != "" || $_FILES['attach_file3']['tmp_name'] != "")
.......
$filename = Array();
$filename[0] = $directory."/".basename($_FILES['attach_file']['name']);
$filename[1] = $directory."/".basename($_FILES['attach_file2']['name']);
$filename[2] = $directory."/".basename($_FILES['attach_file3']['name']);
echo "Plik1: ".$filename[0]." Plik2 ".$filename[1]." Plik3 ".$filename[2];
rename($_FILES['attach_file']['tmp_name'], $filename[0]);
rename($_FILES['attach_file2']['tmp_name'], $filename[1]);
rename($_FILES['attach_file3']['tmp_name'], $filename[2]);:)

p4w3k
30-07-2009, 07:52
Dziękuję Ci bardzo Jolu, jeszcze oczywiście usuwanie plików po wysłaniu, może się komuś przyda:


if($_FILES['attach_file']['name']){
unlink($filename[0]);
}
if($_FILES['attach_file2']['name']){
unlink($filename[1]);
}
if($_FILES['attach_file3']['name']){
unlink($filename[2]);
}