varemarious Δημοσ. 19 Οκτωβρίου 2010 Δημοσ. 19 Οκτωβρίου 2010 Καλημέρα . θέλω να προσθέσω στη φόρμα μου ένα file attachment.. έτσι ώστε κάποιος που θέλει να στείλει ένα αρχείο word ή μια εικόνα να την φορτώνει και να μου έρχεται στο mail.. έχω βρει το παρακάτω κώδικα στην σελίδα http://www.w3schools.com/php/php_file_upload.asp αλλά όταν βάζω το αρχείο μου στέλνει το email δίχως το αρχείο και μου δείχνει αυτό το μήνυμα Upload: test.docx Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document Size: 12.2744140625 Kb Stored in: C:\Windows\Temp\phpED35.tmpInvalid file τι χρειάζεται να κάνω για να το γυρίσω να το στέλνει στο mail. ; ευχαριστώ
varemarious Δημοσ. 19 Οκτωβρίου 2010 Μέλος Δημοσ. 19 Οκτωβρίου 2010 Καλημέρα . θέλω να προσθέσω στη φόρμα μου ένα file attachment.. έτσι ώστε κάποιος που θέλει να στείλει ένα αρχείο word ή μια εικόνα να την φορτώνει και να μου έρχεται στο mail.. έχω βρει το παρακάτω κώδικα στην σελίδα http://www.w3schools.com/php/php_file_upload.asp αλλά όταν βάζω το αρχείο μου στέλνει το email δίχως το αρχείο και μου δείχνει αυτό το μήνυμα Upload: test.docx Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document Size: 12.2744140625 Kb Stored in: C:\Windows\Temp\phpED35.tmpInvalid file τι χρειάζεται να κάνω για να το γυρίσω να το στέλνει στο mail. ; ευχαριστώ
isay Δημοσ. 19 Οκτωβρίου 2010 Δημοσ. 19 Οκτωβρίου 2010 Μια ολοκληρωμένη (και καλή λύση) ειναι το http://www.freestuff.gr/forums/viewtopic.php?t=32228
isay Δημοσ. 19 Οκτωβρίου 2010 Δημοσ. 19 Οκτωβρίου 2010 Μια ολοκληρωμένη (και καλή λύση) ειναι το http://www.freestuff.gr/forums/viewtopic.php?t=32228
gtroza Δημοσ. 20 Οκτωβρίου 2010 Δημοσ. 20 Οκτωβρίου 2010 αλλο attachment και άλλο upload νομίζω http://www.webcheatsheet.com/PHP/send_email_text_html_attachment.php ευχαριστούμε isay .
gtroza Δημοσ. 20 Οκτωβρίου 2010 Δημοσ. 20 Οκτωβρίου 2010 αλλο attachment και άλλο upload νομίζω http://www.webcheatsheet.com/PHP/send_email_text_html_attachment.php ευχαριστούμε isay .
varemarious Δημοσ. 21 Οκτωβρίου 2010 Μέλος Δημοσ. 21 Οκτωβρίου 2010 αλλο attachment και άλλο uploadνομίζω http://www.webcheatsheet.com/PHP/send_email_text_html_attachment.php ευχαριστούμε isay . έχω κι εγώ αυτή την αμφιβολία... μεταξύ upload και attachment.. δυστυχώς το link σου isay δεν βοήθησε.. καθώς μίλησα με τον δημιουργό του και μου είπε ότι δε μπορώ να χρησιμοποιήσω το συγκεκριμένο script... αν έχετε κάποιο άλλο link (που τα έχω σχεδόν εξαντλήσει όλα στο google) και όλα από κάπου χάνουν..τότε καλοδεχούμενο..
varemarious Δημοσ. 21 Οκτωβρίου 2010 Μέλος Δημοσ. 21 Οκτωβρίου 2010 αλλο attachment και άλλο uploadνομίζω http://www.webcheatsheet.com/PHP/send_email_text_html_attachment.php ευχαριστούμε isay . έχω κι εγώ αυτή την αμφιβολία... μεταξύ upload και attachment.. δυστυχώς το link σου isay δεν βοήθησε.. καθώς μίλησα με τον δημιουργό του και μου είπε ότι δε μπορώ να χρησιμοποιήσω το συγκεκριμένο script... αν έχετε κάποιο άλλο link (που τα έχω σχεδόν εξαντλήσει όλα στο google) και όλα από κάπου χάνουν..τότε καλοδεχούμενο..
iLLiCiT Δημοσ. 21 Οκτωβρίου 2010 Δημοσ. 21 Οκτωβρίου 2010 Το αποτέλεσμα που επιθυμείς είναι ένας συνδυασμός των παραπάνω 2 links (upload + attachement). Με το upload script ανεβάζεις το αρχείο σου στον Server (το αρχείο βρίσκεται στον temp φάκελο $_FILES["file"]["tmp_name"]) Με file_get_contents ή fopen & fread διαβάζεις το περιεχόμενο του αρχείου το οποίο και εκτυπώνεις στο 2ο script στην θέση του $attachment; Και θα δουλέψει μια χαρά. Ιδιαίτερη σημασία θα πρέπει να δώσεις στο Content-Type: application/zip; name="attachment.zip" καθώς θα πρέπει να χρησιμοποιείς το content-type του αρχείου που σου ανεβάσανε από το $_FILES["file"]["type"] αλλά και το name από το $_FILES["file"]["name"]. PS: Μπορεί να χρειαστεί να διαγράφεις το αρχείο από το temp location αφού ολοκληρώσεις την αποστολή του mail. Μια mix των 2 script δεν είναι πάνω από 15 λεπτά δουλειά (μαζί με τις δοκιμές).
gtroza Δημοσ. 22 Οκτωβρίου 2010 Δημοσ. 22 Οκτωβρίου 2010 As you can see, sending an email with attachment is easy to accomplish. In the preceding example we have multipart/mixed MIME type, and inside it we have multipart/alternative MIME type that specifies two versions of the email. To include an attachment to our message, we read the data from the specified file into a string, encode it with base64, split it in smaller chunks to make sure that it matches the MIME specifications and then include it as an attachment. δυστυχώς δεν είμαι προγραμματιστής! http://www.texelate.co.uk/blog/send-email-attachment-with-php/ http://www.theukwebdesigncompany.com/articles/php-file-attachments.php .
varemarious Δημοσ. 22 Οκτωβρίου 2010 Μέλος Δημοσ. 22 Οκτωβρίου 2010 Το αποτέλεσμα που επιθυμείς είναι ένας συνδυασμός των παραπάνω 2 links (upload + attachement).Με το upload script ανεβάζεις το αρχείο σου στον Server (το αρχείο βρίσκεται στον temp φάκελο $_FILES["file"]["tmp_name"]) Με file_get_contents ή fopen & fread διαβάζεις το περιεχόμενο του αρχείου το οποίο και εκτυπώνεις στο 2ο script στην θέση του $attachment; Και θα δουλέψει μια χαρά. Ιδιαίτερη σημασία θα πρέπει να δώσεις στο Content-Type: application/zip; name="attachment.zip" καθώς θα πρέπει να χρησιμοποιείς το content-type του αρχείου που σου ανεβάσανε από το $_FILES["file"]["type"] αλλά και το name από το $_FILES["file"]["name"]. PS: Μπορεί να χρειαστεί να διαγράφεις το αρχείο από το temp location αφού ολοκληρώσεις την αποστολή του mail. Μια mix των 2 script δεν είναι πάνω από 15 λεπτά δουλειά (μαζί με τις δοκιμές). δοκιμάζω αυτό που λές .. πώς ακριβώς θα ορίσω τη διαδρομή του φακέλου που θα γίνεται upload στο server; το δοκίμασα με http , δεν . με όλη τη διαδρομή D:\vhost\domain_name\httpdocs\......... , δεν δοκίμασα να δώσω μόνο το φάκελο upload\ , δεν, επίσης δίνω δικαιώματα 777 στο φάκελο πάλι , δεν. >Warning: move_uploaded_file(upload/logo.jpeg) [function.move-uploaded-file]: failed to open stream: Permission denied in Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\Windows\Temp\php42A1.tmp' to 'upload/logo.jpeg' in
bikey77 Δημοσ. 23 Οκτωβρίου 2010 Δημοσ. 23 Οκτωβρίου 2010 Κατ αρχήν πρέπει στη φόρμα σου να έχεις ορίσει enctype="multipart/form-data". Έστω η φόρμα form1 και το πεδίο για το attachment: > <form action="sendmail.php" method="post" enctype="multipart/form-data" name="form1" id="form1"> ... <input name="attachment" type="file" id="attachment" /> ... </form> Όταν κάνεις submit, η σελίδα sendmail.php που έχεις ορίσει στο action της φόρμας πρέπει να κάνει τα εξής: > $random_hash = md5(date('r', time())); $to = "[email protected]"; $subject = addslashes($_POST['subject']); $headers = "From: " .addslashes($_POST['email'])."\r\n"; $headers .= 'Content-Type: multipart/mixed;\r\n'; //Gather file data and other things $tmp = $_FILES['attachment']['tmp_name']; $sep = md5(time()); //create a boundary string for sending a mime type email. It must be unique so we use the MD5 algorithm to generate a random hash $filename = $_FILES['attachment']['name']; $filedata = file_get_contents($tmp); //Get file contents $fdata = chunk_split(base64_encode($filedata)); //Encode data into text form //Determine mime type $pos = strrpos($_FILES['attachment']['name'], "."); $ext = substr($_FILES['attachment']['name'], $pos+1, (strlen($_FILES['attachment']['name'])-$pos+1)); if($ext == "zip") { // Ορίζουμε τα accepted file types (zip, pdf, doc κλπ...) $mime_type = "application/zip"; } elseif($ext == "pdf") { // Entaxei, auto mporei na ginei kai me switch alla you get the point... $mime_type = "application/pdf"; } elseif($ext == "doc" || $ext == "docx") { $mime_type = "application/msword"; } elseif($ext == "JPG" || $ext == "jpg" || $ext == "JPEG" || $ext == "jpeg") { $mime_type = "image/jpeg"; } elseif($ext == "gif" || $ext == "GIF") { $mime_type = "image/gif"; } else { exit("Error: Wrong file type!"); } //Begin the message. Be sure to change this how you want it. //Begin the headers $headers .= "MIME-Version: 1.0 Content-Type: Multipart/Mixed; boundary=\"$sep\" charset=\"utf-8\" Content-Transfer-Encoding: 8bit --$sep Content-Type: $mime_type; name=\"$filename\" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=\"$filename\" $fdata --$sep"; $body= "...."; // To ftiaxneis opws theleis mail($to, $subject, $body, $headers); Κάνε 1-2 δοκιμές, θα σου δουλέψει.
iLLiCiT Δημοσ. 23 Οκτωβρίου 2010 Δημοσ. 23 Οκτωβρίου 2010 > //Determine mime type $pos = strrpos($_FILES['attachment']['name'], "."); $ext = substr($_FILES['attachment']['name'], $pos+1, (strlen($_FILES['attachment']['name'])-$pos+1)); if($ext == "zip") { // Ορίζουμε τα accepted file types (zip, pdf, doc κλπ...) $mime_type = "application/zip"; } elseif($ext == "pdf") { // Entaxei, auto mporei na ginei kai me switch alla you get the point... $mime_type = "application/pdf"; } elseif($ext == "doc" || $ext == "docx") { $mime_type = "application/msword"; } elseif($ext == "JPG" || $ext == "jpg" || $ext == "JPEG" || $ext == "jpeg") { $mime_type = "image/jpeg"; } elseif($ext == "gif" || $ext == "GIF") { $mime_type = "image/gif"; } else { exit("Error: Wrong file type!"); } Αυτο δεν χρειάζεται λογικά. Το $_FILES["file"]["type"] περιέχει από μόνο του το mime type. Από το http://www.php.net/manual/en/features.file-upload.post-method.php $_FILES['userfile']['type'] The mime type of the file, if the browser provided this information. An example would be "image/gif".
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.