Πρόβλημα με attachment file

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

Πρόβλημα με attachment file

Δημοσίευση από vassilism » 06 Νοέμ 2007 16:22

Παιδία καλησπέρα σας.
Εδώ και μια εβδομάδα έχω σπάσει το κεφάλι μου προσπαθώντας να φτιάξω μια mail form, η οποία να στέλνει και attachment file στο mail του παραλήπτη.
Όλα δουλεύουν μια χαρά εκτός από το ότι δεν μου στέλνει το attachment file.
Παρακάτω παραθέτω τον κώδικα.
Ευχαριστώ εκ των προτέρων, όποιον μπει στον κόπο να ρίξει μια ματιά.

Κώδικας: Επιλογή όλων

<?php 
function check_email_address&#40;$email&#41; &#123;
  if &#40;!ereg&#40;"^&#91;^@&#93;&#123;1,64&#125;@&#91;^@&#93;&#123;1,255&#125;$", $email&#41;&#41; &#123;
    header&#40;"Location&#58; mail.php?status=0"&#41;;
  &#125;
  $email_array = explode&#40;"@", $email&#41;;
  $local_array = explode&#40;".", $email_array&#91;0&#93;&#41;;
  for &#40;$i = 0; $i < sizeof&#40;$local_array&#41;; $i++&#41; &#123;
     if &#40;!ereg&#40;"^&#40;&#40;&#91;A-Za-z0-9!#$%&'*+/=?^_`&#123;|&#125;~-&#93;&#91;A-Za-z0-9!#$%&'*+/=?^_`&#123;|&#125;~\.-&#93;&#123;0,63&#125;&#41;|&#40;\"&#91;^&#40;\\|\"&#41;&#93;&#123;0,62&#125;\"&#41;&#41;$", $local_array&#91;$i&#93;&#41;&#41; &#123;
       header&#40;"Location&#58; mail.php?status=0"&#41;;
    &#125;
  &#125;  
  if &#40;!ereg&#40;"^\&#91;?&#91;0-9\.&#93;+\&#93;?$", $email_array&#91;1&#93;&#41;&#41; &#123;
    $domain_array = explode&#40;".", $email_array&#91;1&#93;&#41;;
    if &#40;sizeof&#40;$domain_array&#41; < 2&#41; &#123;
         die &#40;"Invalid email address"&#41;;
    &#125;
    for &#40;$i = 0; $i < sizeof&#40;$domain_array&#41;; $i++&#41; &#123;
      if &#40;!ereg&#40;"^&#40;&#40;&#91;A-Za-z0-9&#93;&#91;A-Za-z0-9-&#93;&#123;0,61&#125;&#91;A-Za-z0-9&#93;&#41;|&#40;&#91;A-Za-z0-9&#93;+&#41;&#41;$", $domain_array&#91;$i&#93;&#41;&#41; &#123;
         header&#40;"Location&#58; mail.php?status=0"&#41;;
      &#125;
    &#125;
  &#125;
  return $email;
&#125;



if &#40;$_SERVER&#91;'REQUEST_METHOD'&#93;=="POST"&#41;&#123; 
$site_name = "www.myserver.com";
$admin_email = "mymail@something.gr";
$mime_boundary = "==Multipart_Boundary_x".md5&#40;mt_rand&#40;&#41;&#41;."x"; 
$headers = "Content-Type&#58; multipart/mixed;\r\n" . 
           " boundary=\"&#123;$mime_boundary&#125;\""; 


$check_email = check_email_address&#40;$_REQUEST&#91;'email'&#93;&#41;;           
$time = date&#40;'l dS \of F Y h&#58;i&#58;s A'&#41;;
$email_subject = "New contact message from ".$site_name."";


foreach&#40;$_FILES as $userfile&#41;&#123; 
      $tmp_name = $userfile&#91;'tmp_name'&#93;; 
      $type = $userfile&#91;'type'&#93;; 
      $name = $userfile&#91;'name'&#93;; 
      $size = $userfile&#91;'size'&#93;; 

      if &#40;file_exists&#40;$tmp_name&#41;&#41;&#123; 

         if&#40;is_uploaded_file&#40;$tmp_name&#41;&#41;&#123; 
 
            $file = fopen&#40;$tmp_name,'rb'&#41;; 
   
            $data = fread&#40;$file,filesize&#40;$tmp_name&#41;&#41;; 

            fclose&#40;$file&#41;; 
   
            $data = chunk_split&#40;base64_encode&#40;$data&#41;&#41;; 
         &#125; 
     
         $message .= "--&#123;$mime_boundary&#125;\n" . 
            "Content-Type&#58; &#123;$type&#125;;\n" . 
            " name=\"&#123;$name&#125;\"\n" . 
            "Content-Disposition&#58; attachment;\n" . 
            " filename=\"&#123;$fileatt_name&#125;\"\n" . 
            "Content-Transfer-Encoding&#58; base64\n\n" . 
         $data . "\n\n"; 
      &#125; 
   &#125; 
    &#125;

$message ="Onoma&#58;".$_POST&#91;'name'&#93; ."\n"."Minima&#58;".$_POST&#91;'message'&#93;;


if&#40;mail&#40;$admin_email,$email_subject,$message,"From&#58;$check_email,Reply-to&#58;$check_email"&#41;&#41; &#123;
header&#40;"Location&#58; mail.php?status=1"&#41;;
exit;
&#125; else &#123;
header&#40;"Location&#58; mail.php?status=0"&#41;;
&#125;
?>

Άβαταρ μέλους
Alice_Cooper
Δημοσιεύσεις: 1947
Εγγραφή: 11 Μάιος 2007 00:33
Τοποθεσία: Ioannina
Επικοινωνία:

Πρόβλημα με attachment file

Δημοσίευση από Alice_Cooper » 07 Νοέμ 2007 00:43

Κώδικας: Επιλογή όλων

....
foreach&#40;$_FILES as $userfile&#41;&#123;
      $tmp_name = $userfile&#91;'tmp_name'&#93;; \\ <== afto koita ligo ... malon $userfile&#91;'name'&#93;
      $type = $userfile&#91;'type'&#93;;
      $name = $userfile&#91;'name'&#93;;
      $size = $userfile&#91;'size'&#93;;
echo  $tmp_name."|".$type."|".$name."|".$size; <== prosthese na deis....
      if &#40;file_exists&#40;$tmp_name&#41;&#41;&#123;

         if&#40;is_uploaded_file&#40;$tmp_name&#41;&#41;&#123;
 
            $file = fopen&#40;$tmp_name,'rb'&#41;;
   
            $data = fread&#40;$file,filesize&#40;$tmp_name&#41;&#41;;

            fclose&#40;$file&#41;;
   
            $data = chunk_split&#40;base64_encode&#40;$data&#41;&#41;;
         &#125;
     
         $message .= "--&#123;$mime_boundary&#125;\n" .
            "Content-Type&#58; &#123;$type&#125;;\n" .
            " name=\"&#123;$name&#125;\"\n" .
            "Content-Disposition&#58; attachment;\n" .
            " filename=\"&#123;$fileatt_name&#125;\"\n" .
            "Content-Transfer-Encoding&#58; base64\n\n" .
         $data . "\n\n";
      &#125;
   &#125;
.... 

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

Πρόβλημα με attachment file

Δημοσίευση από vassilism » 07 Νοέμ 2007 11:49

Alice σευχαριστώ για την απάντησή σου.
Το πρόβλημα ήταν στην σύνταξη της συνάρτησης mail.
Τελικά δουλεύει αλλά μου προέκυψε πρόβλημα με τα Ελληνικά.
Όταν λαμβάνω το mail δεν μου βγάζει τα Ελληνικά.
Το αρχείο είναι αποθηκευμένο ANSI.
Εδώ αλλάζω το charset αλλά δεν γίνετε τίποτα.
Τι μπορεί να φταίει???

Κώδικας: Επιλογή όλων

$message = "This is a multi-part message in MIME format.\n\n" . 
           "--&#123;$mime_boundary&#125;\n" . 
           "Content-Type&#58; text/plain; charset=\"Greek-windows\"\n" . 
           "Content-Transfer-Encoding&#58; 7bit\n\n" . $message . "\n\n";

Εδώ είναι όλος ο κώδικάς:

Κώδικας: Επιλογή όλων

<?php 
function check_email_address&#40;$email&#41; &#123; 
  if &#40;!ereg&#40;"^&#91;^@&#93;&#123;1,64&#125;@&#91;^@&#93;&#123;1,255&#125;$", $email&#41;&#41; &#123; 
    header&#40;"Location&#58; mail.php?status=0"&#41;; 
  &#125; 
  $email_array = explode&#40;"@", $email&#41;; 
  $local_array = explode&#40;".", $email_array&#91;0&#93;&#41;; 
  for &#40;$i = 0; $i < sizeof&#40;$local_array&#41;; $i++&#41; &#123; 
     if &#40;!ereg&#40;"^&#40;&#40;&#91;A-Za-z0-9!#$%&'*+/=?^_`&#123;|&#125;~-&#93;&#91;A-Za-z0-9!#$%&'*+/=?^_`&#123;|&#125;~\.-&#93;&#123;0,63&#125;&#41;|&#40;\"&#91;^&#40;\\|\"&#41;&#93;&#123;0,62&#125;\"&#41;&#41;$", $local_array&#91;$i&#93;&#41;&#41; &#123; 
       header&#40;"Location&#58; mail.php?status=0"&#41;; 
    &#125; 
  &#125;  
  if &#40;!ereg&#40;"^\&#91;?&#91;0-9\.&#93;+\&#93;?$", $email_array&#91;1&#93;&#41;&#41; &#123; 
    $domain_array = explode&#40;".", $email_array&#91;1&#93;&#41;; 
    if &#40;sizeof&#40;$domain_array&#41; < 2&#41; &#123; 
         die &#40;"Invalid email address"&#41;; 
    &#125; 
    for &#40;$i = 0; $i < sizeof&#40;$domain_array&#41;; $i++&#41; &#123; 
      if &#40;!ereg&#40;"^&#40;&#40;&#91;A-Za-z0-9&#93;&#91;A-Za-z0-9-&#93;&#123;0,61&#125;&#91;A-Za-z0-9&#93;&#41;|&#40;&#91;A-Za-z0-9&#93;+&#41;&#41;$", $domain_array&#91;$i&#93;&#41;&#41; &#123; 
         header&#40;"Location&#58; mail.php?status=0"&#41;; 
      &#125; 
    &#125; 
  &#125; 
  return $email; 
&#125; 




$admin_email =   "info@mymail.gr"; 
$site_name =     "www.myserver.com"; 
$email_subject = "New contact message from ".$site_name.""; 
$check_email =   check_email_address&#40;$_REQUEST&#91;'email'&#93;&#41;;  
$mime_boundary=  "==Multipart_Boundary_x".md5&#40;mt_rand&#40;&#41;&#41;."x"; 
$headers =       "From&#58; $check_email\r\n" .
                 "MIME-Version&#58; 1.0\r\n" . 
                 "Content-Type&#58; multipart/mixed;\r\n" . 
                 " boundary=\"&#123;$mime_boundary&#125;\""; 

$message = "Onoma&#58;" .$_POST&#91;'name'&#93;    ."\n".
           "Tel&#58;"   .$_POST&#91;'tel'&#93;     ."\n".
           "Minima&#58;".$_POST&#91;'message'&#93;; 

$message = "This is a multi-part message in MIME format.\n\n" . 
           "--&#123;$mime_boundary&#125;\n" . 
           "Content-Type&#58; text/plain; charset=\"Greek-windows\"\n" . 
           "Content-Transfer-Encoding&#58; 7bit\n\n" . $message . "\n\n"; 


   foreach&#40;$_FILES as $userfile&#41;&#123; 
      $tmp_name = $userfile&#91;'tmp_name'&#93;; 
      $type = $userfile&#91;'type'&#93;; 
      $name = $userfile&#91;'name'&#93;; 
      $size = $userfile&#91;'size'&#93;; 


      if &#40;file_exists&#40;$tmp_name&#41;&#41;&#123; 


         if&#40;is_uploaded_file&#40;$tmp_name&#41;&#41;&#123; 
     

            $file = fopen&#40;$tmp_name,'rb'&#41;; 
     

            $data = fread&#40;$file,filesize&#40;$tmp_name&#41;&#41;; 


            fclose&#40;$file&#41;; 
     

            $data = chunk_split&#40;base64_encode&#40;$data&#41;&#41;; 
         &#125; 
     

         $message .= "--&#123;$mime_boundary&#125;\n" . 
            "Content-Type&#58; &#123;$type&#125;;\n" . 
            " name=\"&#123;$name&#125;\"\n" . 
            "Content-Disposition&#58; attachment;\n" . 
            " filename=\"&#123;$fileatt_name&#125;\"\n" . 
            "Content-Transfer-Encoding&#58; base64\n\n" . 
         $data . "\n\n"; 
      &#125; 
   &#125; 

   $message.="--&#123;$mime_boundary&#125;--\n";  
   
if&#40;@mail&#40;$admin_email,$email_subject,$message,$headers&#41;&#41; &#123; 
header&#40;"Location&#58; mail.php?status=1"&#41;; 
exit; 
&#125; else &#123; 
header&#40;"Location&#58; mail.php?status=0"&#41;; 
&#125; 
?>
Τελευταία επεξεργασία από το μέλος vassilism την 07 Νοέμ 2007 16:12, έχει επεξεργασθεί 1 φορά συνολικά.

Άβαταρ μέλους
Alice_Cooper
Δημοσιεύσεις: 1947
Εγγραφή: 11 Μάιος 2007 00:33
Τοποθεσία: Ioannina
Επικοινωνία:

Πρόβλημα με attachment file

Δημοσίευση από Alice_Cooper » 07 Νοέμ 2007 16:11

gia test me

Κώδικας: Επιλογή όλων

"Content-Type&#58; text/plain; charset=\"iso-8859-7\"\n"

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

Πρόβλημα με attachment file

Δημοσίευση από vassilism » 07 Νοέμ 2007 17:43

Alice σευχαριστώ πάρα πολύ.:respect:
Τώρα δουλεύει τέλεια. :victory:
Με την πρώτη ευκαιρία θα το φτιάξω για βοήθημα, πιστεύω ότι θα χρειασθεί σε πολλούς.

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης