mat978 Δημοσ. 3 Απριλίου 2010 Δημοσ. 3 Απριλίου 2010 καλησπέρα insomniτες!Έχω το εξής πρόβλημα με την παρακάτω φόρμα επικοινωνίας: στο πεδίο ''Όνομα/ Email'' όταν λαμβάνω μήνυμα στο email δεν μου εμφανίζει ελληνικούς χαρακτήρες. Τι μπορεί να φταίει? <FORM METHOD=POST ACTION="sendmail.php"> <P> <b><font size="4"> Όνομα/ Email:</font></b><P> <INPUT NAME="email" size="46"><P> <b> <span lang="el"> <font size="4">Κείμενο:</font></span></b><P> <p><TEXTAREA NAME="dokimh" ROWS="10" COLS="45"></TEXTAREA><P><INPUT TYPE="hidden" NAME="recipient" VALUE="my_email"> <font size="3"> <INPUT TYPE="submit" VALUE="Υποβολή" style="font-weight: 700"></font><INPUT TYPE="RESET" VALUE="Καθαρισμός πεδίων"><P></FORM>
dewn735 Δημοσ. 3 Απριλίου 2010 Δημοσ. 3 Απριλίου 2010 Στείλε ντε και το sendmail.php να δούμε τι γίνεται εκεί! Και τι εννοείς δεν εμφανίζει ελληνικούς χαρακτήρες; Τους δείχνει με άλλη κωδικοποίηση (UTF8 αντί για ISO-8859-7); Τους δείχνει σαν ερωτηματικά (?? ??a??); Δε δείχνει τίποτα; Μία φωτογραφία του τι λαμβάνεις θα βοηθούσε αρκετά...
mat978 Δημοσ. 3 Απριλίου 2010 Μέλος Δημοσ. 3 Απριλίου 2010 Βαριά παράλειψη!! <?php $email = $_REQUEST['email'] ; $message = $_REQUEST['themail'] ; $message = $_REQUEST['dokimh'] ; mail( "my_email", "Feedback Form Results", $message, "From: $email" ); header( "Location: http://location" ); ?> μου δείχνει τετραγωνάκια αντί για Ελληνικά
dewn735 Δημοσ. 3 Απριλίου 2010 Δημοσ. 3 Απριλίου 2010 Για αρχή, δοκίμασε να γράψεις αυτό στο sendmail.php και πες μας τι σου έβγαλε. Να δούμε που βγαίνει το πρόβλημα. Εάν ακόμα και τώρα δε στα βγάζει Ελληνικά, μάλλον είναι θέμα κωδικοποίησης. Ποιον mail server έχεις εγκαταστήσει; <?php //Δεν ξέρω γιατί έχεις χρησιμοποιήσει την $_REQUEST. $email = $_POST['email'] ; $email2 = $_POST['themail'] ; //Τι είναι αυτό; $message = $_POST['dokimh'] ; echo "mail: ".$email."<br />Message: ".$message; /* mail( "my_email", "Feedback Form Results", $message, "From: $email" ); header( "Location: http://location" ); */ ?>
mat978 Δημοσ. 3 Απριλίου 2010 Μέλος Δημοσ. 3 Απριλίου 2010 Καλή η προσπάθεια σου αλλά δεν στέλνει τίποτα!!
dewn735 Δημοσ. 3 Απριλίου 2010 Δημοσ. 3 Απριλίου 2010 Το ξέρω φίλε μου ότι δε θα στείλει, το θέμα είναι να δούμε τι θα σου δείξει στην οθόνη η echo. Εάν πρόσεξες, έχω βάλει τον κώδικα που στέλνει το email σε σχόλιο (/* ... */). Γενικότερα, πόσο καλά το κατέχεις το θέμα php;
mat978 Δημοσ. 3 Απριλίου 2010 Μέλος Δημοσ. 3 Απριλίου 2010 φίλε dewn αν κατείχα την php δεν θα ζητούσα βοήθειά εδώ αλλά θα είχα ασχοληθεί μόνος. Και θεωρώ πολύτιμη την βοήθεια σου εδώ!η echo μου τα δείχνει σωστά!!Ελληνικά χωρίς τετραγωνάκια δηλαδή!από εκεί και μετά τι γίνεται όμως?
dewn735 Δημοσ. 3 Απριλίου 2010 Δημοσ. 3 Απριλίου 2010 Ωραία. Τι mail server χρησιμοποιείς; Αφού η echo σου τα βγάζει σωστά, είμαι σχεδόν σίγουρος ότι είναι θέμα επιλογών του mail server...
mat978 Δημοσ. 3 Απριλίου 2010 Μέλος Δημοσ. 3 Απριλίου 2010 δεν χρησιμοποιώ mail server ! και δεν νομίζω να είναι από αυτό γιατί όπου και αν την έχω χρησιμοποιήσει σε άλλα site την συγκεκριμένη φόρμα το ίδιο πρόβλημα έχω!το δεύτερο πεδίο (κείμενο) όμως δεν έχει πρόβλημα δείχνει κανονικά τα Ελληνικά.
nske Δημοσ. 4 Απριλίου 2010 Δημοσ. 4 Απριλίου 2010 Ωραία. Τι mail server χρησιμοποιείς; Αφού η echo σου τα βγάζει σωστά, είμαι σχεδόν σίγουρος ότι είναι θέμα επιλογών του mail server... Ο MTA κανονικά δεν ασχολείται με το encoding του περιεχομένου του μηνύματος, δεν είναι μέρος της δουλειάς του. Το πρόβλημα είναι ότι δεν ορίζονται καθόλου οι headers που προβλέπει το MIME, οπότε το άλλο άκρο δε γνωρίζει με ποια κωδικοποίηση να επεξεργαστεί το μήνυμα. Σίγουρα θα υπάρχουν διάφορες wrapping mailing classes ή functions που διευκολύνουν την εισαγωγή MIME headers, όμως είναι αρκετά εύκολο να τους εισάγει κάποιος απευθείας, π.χ.: >$charset='UTF-8'; $subject='Ελληνικοί Χαρακτήρες;'; $encoded_subject="=?$charset?B?".base64_encode($subject)."?=\n"; $to="[email protected]"; $body='τεστ;'; $headers="From: ".$from."\n" . "Content-Type: text/plain; charset=$charset; format=flowed\n" . "MIME-Version: 1.0\n" . "Content-Transfer-Encoding: 8bit\n" . "X-Mailer: PHP\n"; mail($to,$encoded_subject, $body,$headers);
dewn735 Δημοσ. 4 Απριλίου 2010 Δημοσ. 4 Απριλίου 2010 Ο MTA κανονικά δεν ασχολείται με το encoding του περιεχομένου του μηνύματος, δεν είναι μέρος της δουλειάς του. Το πρόβλημα είναι ότι δεν ορίζονται καθόλου οι headers που προβλέπει το MIME, οπότε το άλλο άκρο δε γνωρίζει με ποια κωδικοποίηση να επεξεργαστεί το μήνυμα. Σίγουρα θα υπάρχουν διάφορες wrapping mailing classes ή functions που διευκολύνουν την εισαγωγή MIME headers, όμως είναι αρκετά εύκολο να τους εισάγει κάποιος απευθείας, π.χ.: >$charset='UTF-8'; $subject='Ελληνικοί Χαρακτήρες;'; $encoded_subject="=?$charset?B?".base64_encode($subject)."?=\n"; $to="[email protected]"; $body='τεστ;'; $headers="From: ".$from."\n" . "Content-Type: text/plain; charset=$charset; format=flowed\n" . "MIME-Version: 1.0\n" . "Content-Transfer-Encoding: 8bit\n" . "X-Mailer: PHP\n"; mail($to,$encoded_subject, $body,$headers); Σωστός... Βρήκαμε τελικά τι φταίει;
mat978 Δημοσ. 7 Απριλίου 2010 Μέλος Δημοσ. 7 Απριλίου 2010 με τον κώδικα αυτόν τώρα όλα τα δείχνει με τετραγωνάκια!!!δεν μποροώ να καταλάβω τι γίνεται!!!!
nske Δημοσ. 7 Απριλίου 2010 Δημοσ. 7 Απριλίου 2010 Το παράδειγμα προϋποθέτει ότι τα δεδομένα έχουν εισαχθεί με την δηλωμένη κωδικοποίηση (utf-8), έτσι; Για παράδειγμα, αν τα δεδομένα εισάγονται από κάποια HTML form, θα πρέπει ο browser να χρησιμοποιήσει UTF-8 κατά τη συμπλήρωσή της (μπορείς να του υποδείξεις να το κάνει ως εξής), ενώ αν τα δεδομένα εισάγονται καρφωτά στον κώδικα, θα πρέπει ο text editor που χρησιμοποίησες για τον κώδικα να χρησιμοποιεί UTF-8 encoding. Φυσικά αν θέλεις μπορείς να χρησιμοποιήσεις και κάποια άλλη κωδικοποίηση που υποστηρίζει ελληνικούς χαρακτήρες, UTF-8 είπα σαν παράδειγμα.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.