Funkcja mail() i załącznik

0

Próbuje wysłać załącznik po przez funkcję mail(), jednak do mnie wiadomość bez załącznika.
Kod poniżej

 
 if ($_FILES["file"]["error"] > 0)
    { $komunikat = "<img src=\"img_panel/bttn_error.gif\">"."Return Code: " . $_FILES["file"]["error"] ;
             
    }
    if (file_exists("zalacznik/" . $_FILES["file"]["name"]))
      {
      
      $komunikat = "<img src=\"img_panel/bttn_error.gif\">"."Return Code: " . $_FILES["file"]["name"] . " already exists. " ;
           
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],

      "zalacznik/" . $_FILES["file"]["name"]);

    $komunikat = "<img src=\"img_panel/bttn_info.gif\">" . "zalacznik/" . $_FILES["file"]["name"];
    $target_path="zalacznik/" . $_FILES["file"]["tmp_name"];////ścieżka do pliku
     $nazwapliku= $_FILES["file"]["name"];
 $content= chunk_split(base64_encode(file_get_contents($target_path)));
 $uid= md5(uniqid(time()));
 $tresc = $_POST['tresc'];
 $temat = $_POST['tytul'];
     $naglowki = "From: <[email protected]>\n"; 
     $naglowki .= "MIME-Version: 1.0\n"; 
     $naglowki .= "Content-type: multipart/mixed;  boundary=\"".$uid."\"\n"; 
     
     $naglowki .= "---".$uid."\n";
     $naglowki .="Content-type: text/html charset=iso-8859-2\n";
     $naglowki .="Content-Transfer-Encoding: 7bit \n";
     $naglowki .= $tresc."\n";
     
     $naglowki .= "---".$uid."\n";
     $naglowki .="Content-type: image/png; name=\"".$nazwapliku. "\"\n";
     $naglowki .="Content-Transfer-Encoding: base64 \n";
     $naglowki .= "Content-Dispositing: attachment, fie=\"".$nazwapliku."\"\n";
     $naglowki .= $content."\n";
     
    if( mail("[email protected]",$temat,"", win2iso($naglowki))){
         $komunikat = "<img src=\"img_panel/bttn_info.gif\">plik został wysłany";
    
    }
    else
        $komunikat = "<img src=\"img_panel/bttn_error.gif\"> wysyłanie się nie powiodło";
                        //$zalacznik= chunk_split(base64_encode(file_get_contents($target_path)));
  
    }

W mailu dostaję wszystko to co jest w nagłówku, bez załącznika. Ten kod pisałem na podstawie tutorialu

Gdzie jest błąd ?

1

Robisz:

move_uploaded_file($_FILES["file"]["tmp_name"],  "zalacznik/" . $_FILES["file"]["name"]);
$komunikat = "<img src=\"img_panel/bttn_info.gif\">" . "zalacznik/" . $_FILES["file"]["name"];

Czyli przenosisz uploadowany plik do zalacznik/<jego oryginalna nazwa>, a potem wczytujesz plik:

$target_path="zalacznik/" . $_FILES["file"]["tmp_name"];////ścieżka do pliku
$nazwapliku= $_FILES["file"]["name"];
$content= chunk_split(base64_encode(file_get_contents($target_path)));

Gdzie wykorzystujesz $target_path aby stworzyć $content, który jest wpisywany do maila, jednak $target_path odnosi się do zalacznik/<nazwa tymczasowa> (tmp_name).

1
$naglowki .= "Content-Dispositing: attachment, fie=\"".$nazwapliku."\"\n";

Tutaj także jest źle.
1.content-disposition
1.file, a nie fie.

0

Dzięki za rady wysyła załączniki ale teraz niektóre są blokowane przez antywirus, jak temu zapobiec (może przez to że nazwy załączników są takie "załącznik" ewentualnie kilka to "zalacznik1"...).

0

A antywirus zwraca jakiś konkretny komunikat? Raczej tak. Od tego bym zaczął.

0

Kolejny problem związany z załącznikami chcę dodać kilka załączników, gdy go wysyłam otrzymuję jeden plik zlepiony zdrugim.

    $tablica_plikow=$_FILES["file"];
if(!empty($tablica_plikow['name'])){///załącznik
          $uid = md5(uniqid(time()));

    $header =  "From: od\n";
    $header .= "MIME-Version: 1.0\r\n";
    $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
   
    $header .= "--".$uid."\r\n";
    $header .= "Content-type:text/html; charset=iso-8859-2\r\n";
    $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
    $header .=win2iso( $_POST['tresc'])."\r\n\r\n\r\n\r\n\r\n\r\n";
    $header .= "--".$uid."\r\n";
   
    for($i=0; $i<count($tablica_plikow['name']); $i++){
    
    if ($tablica_plikow["error"][$i] > 0)
    { $komunikat = "<img src=\"img_panel/bttn_error.gif\">"."Return Code: " . $tablica_plikow["error"][$i] ;
  
     
    }
    if (file_exists("zalacznik/" . $tablica_plikow["name"][$i]))
      {
      
      $komunikat = "<img src=\"img_panel/bttn_error.gif\">"."Return Code: " . $tablica_plikow["name"][$i]. " already exists. " ;
           
      }
    else
      {
        if(is_uploaded_file($tablica_plikow["tmp_name"][$i])) { 
    move_uploaded_file($tablica_plikow["tmp_name"][$i],
    "zalacznik/" . $tablica_plikow["name"][$i]);
    $komunikat = "<img src=\"img_panel/bttn_info.gif\">" . "zalacznik/" . $tablica_plikow["name"][$i];
   
    $target_path="zalacznik/" . $tablica_plikow["name"][$i];
    $file = "zalacznik/".$tablica_plikow["name"][$i];
    $file_size = filesize($file);
    $handle = fopen($file, "rb");
    $content = fread($handle, $file_size);
    fclose($handle);
    $content = chunk_split(base64_encode($content));
    $name = basename($file);
    $header .= "Content-Type: ".$tablica_plikow["type"][$i]." name=\"".$tablica_plikow["name"][$i]."\"\r\n"; // use different content types here
    $header .= "Content-Transfer-Encoding: base64\n\r".$content."\r\n\r\n";;
    $header .= "Content-Disposition: attachment; filename=\"".$tablica_plikow["name"][$i]."\"\r\n\r\n";
   // $header .= $content."\r\n\r\n";
    $header .= "--".$uid."-- \r\n";

            }
        }
    }
     if (mail("[email protected]", $_POST['tytul'], "", $header)) {
      
         $komunikat = "<img src=\"img_panel/bttn_info.gif\">mail testowy zosta≥ wys≥any";
        
      
    } else {
      $komunikat = "<img src=\"img_panel/bttn_error.gif\"> wysy≥anie siÍ nie powiod≥o";
     
      }

otrzymuje to:
Content-Disposition: attachment; filename="1"
--8422f518fc2ca86e44fa7a9586b45707--
Content-Type: application/octet-stream name="2"
Content-Transfer-Encoding: base64
1 Content-Disposition: attachment; filename="2"
Pliki zawierały tylko cyfry 1 plik 1 oraz 2 plik 2

1 użytkowników online, w tym zalogowanych: 0, gości: 1