Πρόβλημα με PHP email και ελληνικά

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

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

Απάντηση
kalpatron
Δημοσιεύσεις: 44
Εγγραφή: 03 Απρ 2006 20:24

Πρόβλημα με PHP email και ελληνικά

Δημοσίευση από kalpatron » 16 Φεβ 2008 11:32

Παιδιά έχω το εξής script

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

<?php
// Email
$subject="Καλώς Ορίσατε!";
$message="Δημιουργείσατε έναν λογαριασμό. Παρακαλώ επισκεφτείτε μας σύντομα για όλα τα τελευταία νέα.";
$to="toemail@tomember.com";  //Βάζω το email μου στο yahoo για δοκιμή
$headers = "From&#58; Webmaster <members@kapou.com>"; //βάζω ένα λογαριασμό που έχω δημιουργήσει στο host account μου.

if &#40;mail&#40;$to,$subject,$message,$headers&#41;&#41;&#123;
	// Επιτυχία
		echo "Θα λάβετε ένα email σύντομα";
		&#125;
		else &#123;
	// Αποτυχία
		echo "Αποτυχία αποστολής email.";
		&#125;
?>

Το πρόβλημα είναι ότι το email μου (yahoo.gr) δεν δείχνει κανέναν ελληνικό χαρακτήρα (τα δείχνει κινέζικα...), ούτε στο message, ούτε στο subject, ενώ όλες οι php σελίδες μου είναι γραμμένες σε UTF-8 (<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />) και γενικά δεν υπάρχει κάπου πρόβλημα με ελληνικούς χαρακτήρες στο site. Αν κάνω ένα απλό echo του message, το εμφανίζει κανονικά το site, αλλά το πρόβλημα είναι ότι δεν το διαβάζει το email. Γνωρίζετε μήπως κάτι;

Ευχαριστώ.

Άβαταρ μέλους
greekbytes
WebDev Moderator
Δημοσιεύσεις: 2438
Εγγραφή: 15 Νοέμ 2002 15:42
Τοποθεσία: Αθήνα
Επικοινωνία:

Πρόβλημα με PHP email και ελληνικά

Δημοσίευση από greekbytes » 16 Φεβ 2008 12:58

δοκίμασε να αλλάξεις αυτό:

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

$headers = "From&#58; Webmaster <members@kapou.com>"; 
με αυτό: (προσοχή στο ".=")

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

$headers  = 'MIME-Version&#58; 1.0' . "\r\n";
$headers .= 'Content-type&#58; text/html; charset=utf-8' . "\r\n";
$headers .= 'From&#58; Webmaster <members@kapou.com>' . "\r\n"; 
..για να το στείλεις ως html με utf-8 charset. Δεν το έχω δοκιμάσει, πες μας αν είχες αποτέλεσμα.

kalpatron
Δημοσιεύσεις: 44
Εγγραφή: 03 Απρ 2006 20:24

Πρόβλημα με PHP email και ελληνικά

Δημοσίευση από kalpatron » 18 Φεβ 2008 00:09

greekbytes ευχαριστώ για την απάντηση. Λοιπόν με αυτό τον τρόπο δείχνει μια χαρά τα message - το κείμενο που εμφανίζεται κανονικά μέσα στο email, αλλά εξακολουθεί να μην δείχνει το subject - το θέμα του email!!!!! Any thoughts?

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

Πρόβλημα με PHP email και ελληνικά

Δημοσίευση από vassilism » 18 Φεβ 2008 03:05

Κάνε ακριβώς το ίδιο και στην μεταβλητή για το subject.

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

$subject = 'MIME-Version&#58; 1.0' . "\r\n"; 
           'Content-type&#58; text/html; charset=utf-8' . "\r\n"; 

kalpatron
Δημοσιεύσεις: 44
Εγγραφή: 03 Απρ 2006 20:24

Πρόβλημα με PHP email και ελληνικά

Δημοσίευση από kalpatron » 18 Φεβ 2008 09:27

Το είχα δοκιμάσει και αυτό αλλά μου εμφανίζει στο subject

MIME-Version: 1.0 Content-type: text/html; charset=utf-8 123 Ξ&#65533;Ξ±Ξ»Ο&#65533;Ο&#65533; Ξ&#65533;Ο&#65533;Ξ―Ο&#65533;Ξ±Ο&#65533;Ξ΅!

Απ' ότι έχω ακούσει αυτό το πρόβλημα συμβαίνει σε πολύ λίγα emails, όπως το yahoo (τουλάχιστον το ελληνικό). Any other thoughts? Μήπως υπάρχει καμία class που έχει χρησιμοποιήσει κάποιος και ξέρει ότι δουλεύει σίγουρα;

Thanks!

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

Πρόβλημα με PHP email και ελληνικά

Δημοσίευση από vassilism » 18 Φεβ 2008 14:55

Σίγουρα δηλώνεις κάποια μεταβλητή για subject?
Μήπως είναι εκεί το πρόβλημα?

kalpatron
Δημοσιεύσεις: 44
Εγγραφή: 03 Απρ 2006 20:24

Πρόβλημα με PHP email και ελληνικά

Δημοσίευση από kalpatron » 18 Φεβ 2008 16:04

vassilism έγραψε:Σίγουρα δηλώνεις κάποια μεταβλητή για subject?
Μήπως είναι εκεί το πρόβλημα?
Τί εννοείς; Δηλώνω όπως λέει και ο κώδικας που έγραψα παραπάνω, μια μεταβλητή $subject ως εξής:

$subject="Καλώς Ορίσατε!";

Αν σε αυτή βάλω αγγλικούς χαρακτήρες τότε no problem... Άρα ψάχνω πως θα το κωδικοποιήσω σε UTF-8.

Άβαταρ μέλους
papatzas
Δημοσιεύσεις: 227
Εγγραφή: 03 Δεκ 2005 14:23

Πρόβλημα με PHP email και ελληνικά

Δημοσίευση από papatzas » 18 Φεβ 2008 17:53

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

	function MailHeader&#40;$to, $from_title=''&#41;
	&#123;
		$header = "From&#58; &#123;$to&#125;\r\n";
		$header.= "Reply-To&#58; &#123;$to&#125;\r\n";
		$header.= "Return-Path&#58; &#123;$to&#125;\r\n";
		$header.= "MIME-Version&#58; 1.0\r\n";
		$header.= "Content-type&#58; text/html; charset=utf-8\r\n";
		$header.= "Content-Transfer-encoding&#58; 8bit\r\n";
		$header.= "Message-ID&#58; <".md5&#40;uniqid&#40;time&#40;&#41;&#41;&#41;."@&#123;$_SERVER&#91;'SERVER_NAME'&#93;&#125;>\r\n";
		$header.= "X-Priority&#58; 3\r\n";
		$header.= "X-MSmail-Priority&#58; Normal\r\n";
		$header.= "X-Mailer&#58; Microsoft Office Outlook, Build 11.0.5510\r\n";
		$header.= "X-MimeOLE&#58; Produced By Microsoft MimeOLE V6.00.2800.1441\r\n";
		$header.= "X-Sender&#58; &#123;$to&#125;\r\n";
		
		return $header;
	&#125;
:-)

kalpatron
Δημοσιεύσεις: 44
Εγγραφή: 03 Απρ 2006 20:24

Πρόβλημα με PHP email και ελληνικά

Δημοσίευση από kalpatron » 18 Φεβ 2008 18:08

Μμμμ.... όλα τα πεδία εμφανίζονται κανονικά εκτός από το "subject". Σε ότι αφορά τα $to και $from_title που λες papatzas, αυτά εμφανίζονται ΟΚ.

Άβαταρ μέλους
papatzas
Δημοσιεύσεις: 227
Εγγραφή: 03 Δεκ 2005 14:23

Πρόβλημα με PHP email και ελληνικά

Δημοσίευση από papatzas » 18 Φεβ 2008 18:11

Κάνε convert file enconding το file.php απο ANSI-> UTF-8 , με κάποιον editor... γιατί προφανώς είναι σε ansi και θα σαι κομπλέ
:-)

kalpatron
Δημοσιεύσεις: 44
Εγγραφή: 03 Απρ 2006 20:24

Πρόβλημα με PHP email και ελληνικά

Δημοσίευση από kalpatron » 18 Φεβ 2008 23:31

papatzas έγραψε:Κάνε convert file enconding το file.php απο ANSI-> UTF-8 , με κάποιον editor... γιατί προφανώς είναι σε ansi και θα σαι κομπλέ
Γκούχου-γκούχου. Ένταξει είπαμε... εννοείτε πως έτσι το έχω κάνει και δεν παίζει. Anyway βρήκα μια function που κάνει αυτή τη μετατροπή και λειτουργεί κανονικά, απλά πρέπει τα email να είναι σε μορφή

name<to@email.com>

για να λειτουργήσει. Θα την ποστάρω σύντομα, αφού κάνω ακόμη κάποιες αλλαγές. Αν κάποιος ξέρει καμία άλλη λύση ας μας την δείξει.

Άβαταρ μέλους
papatzas
Δημοσιεύσεις: 227
Εγγραφή: 03 Δεκ 2005 14:23

Πρόβλημα με PHP email και ελληνικά

Δημοσίευση από papatzas » 19 Φεβ 2008 00:26

κάνε αυτό που σου πρότεινα , με editor
:-)

kalpatron
Δημοσιεύσεις: 44
Εγγραφή: 03 Απρ 2006 20:24

Πρόβλημα με PHP email και ελληνικά

Δημοσίευση από kalpatron » 19 Φεβ 2008 07:02

papatzas έγραψε:κάνε αυτό που σου πρότεινα , με editor
Μα το έχω κάνει!

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

Πρόβλημα με PHP email και ελληνικά

Δημοσίευση από vassilism » 19 Φεβ 2008 17:43

Γράψε μας τον κώδικα που χρησιμοποιείς, να δούμε τι παίζει.

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Πρόβλημα με PHP email και ελληνικά

Δημοσίευση από cpulse » 21 Φεβ 2008 14:46

Στα emails ειδικά τα subjects και τα ονόματα των επαφών, όταν γράφονται σε κωδικοποίηση πέρα τις αγγλικής πρέπει να κωδικοποιούνται με ειδικό τρόπο.

Υπάρχουν δύο μορφές, η base64 και η quoted printable. Η quoted printable είναι η ποιο ευανάγνωστη αλλά η base64 είναι ευκολότερη από πλευράς κώδικα.

Το subject θα πρέπει να έχει αυτή την μορφή με utf-8:
=?utf-8?b?abcdefg?=

και αν θέλουμε να βάλουμε Ελληνικούς χαρακτήρες στα ονόματα των επαφών με κωδικοποίηση πάλι utf-8 θα πρέπει να το γράψουμε όχι έτσι
"Ελληνικό Όνομα" <email@example.com>
αλλά έτσι
=?utf-8?b?abcdefg?= <email@example.com>

επομένως αντί για

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

$subject="Καλώς Ορίσατε!";
γράψε

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

$subject = '=?utf-8?b?' . base64_encode&#40;'Καλώς Ορίσατε!'&#41; . '?=';
Και αυτό θα λειτουργήσει σωστά αν και το "Καλώς Ορίσατε!" είναι ήδη σε utf-8. Αν είναι σε iso-8859-7 κάντω έτσι:

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

$subject = '=?utf-8?b?' . base64_encode&#40;iconv&#40;'iso-8859-7', 'utf-8', 'Καλώς Ορίσατε!'&#41;&#41; . '?=';
ή άλλαξε την κωδικοποίηση έτσι

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

$subject = '=?iso-8859-7?b?' . base64_encode&#40;'Καλώς Ορίσατε!'&#41; . '?=';

Απάντηση

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

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

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