Php E-mail Script

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

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

Απάντηση
hubman11
Δημοσιεύσεις: 12
Εγγραφή: 28 Ιαν 2010 18:40

Php E-mail Script

Δημοσίευση από hubman11 » 22 Οκτ 2010 16:56

Κατα αρχην ενα γεια σε ολους εδω μεσα.
Θα ηθελα μια βοηθεια με το παρακατω script λογω του οτι οχι τοσο καλος γνωστης php οσο html.
το προβλημα ειναι οτι οταν ερχεται μειλ απο την φορμα ολα ειναι κινεζικα
Οταν εβαλα $subject = '=?utf-8?b?' . base64_encode('Απο Φορμα επικοινωνιας') . '?=';
τοτε ηταν ολα οκ.
Το προβλημα ειναι οτι δεν παιζει σε ολους τους σερβερς και μαλλον η μονη λυση θα ηταν με headers.

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

$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
Το προβλημα μου ειναι που ακριβως να μπουν τα Headers στον κωδικα.

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

<?php
//--------------------------Set these paramaters--------------------------

// Subject of email sent to you.
$subject = 'Results from contact form';
$subject = '=?utf-8?b?' . base64_encode&#40;'Απο Φορμα επικοινωνιας'&#41; . '?=';

// Your email address. This is where the form information will be sent. 
$emailadd = 'info@info.gr'; 

// Where to redirect after form is processed. 
$url = 'http&#58;//www.info.gr/confirmation.html'; 

// Makes all fields required. If set to '1' no field can not be empty. If set to '0' any or all fields can be empty.
$req = '1'; 

// --------------------------Do not edit below this line--------------------------
$text = "Results from form&#58;\n\n"; 
$space = ' ';
$line = '
';
foreach &#40;$_POST as $key => $value&#41;
&#123;
if &#40;$req == '1'&#41;
&#123;
if &#40;$value == ''&#41;
&#123;echo "$key is empty";die;&#125;
&#125;
$j = strlen&#40;$key&#41;;
if &#40;$j >= 20&#41;
&#123;echo "Name of form element $key cannot be longer than 20 characters";die;&#125;
$j = 20 - $j;
for &#40;$i = 1; $i <= $j; $i++&#41;
&#123;$space .= ' ';&#125;
$value = str_replace&#40;'\n', "$line", $value&#41;;
$conc = "&#123;$key&#125;&#58;$space&#123;$value&#125;$line";
$text .= $conc;
$space = ' ';
&#125;
mail&#40;$emailadd, $subject, $text, 'From&#58; '.$emailadd.''&#41;;
echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL='.$url.'">';
?>


hubman11
Δημοσιεύσεις: 12
Εγγραφή: 28 Ιαν 2010 18:40

Php E-mail Script

Δημοσίευση από hubman11 » 27 Οκτ 2010 15:16

Βασικα να ευχαριστησω για την απαντηση αλλα ειχα διαβασει ολα τα τοπικ για αυτο το θεμα.
Η λυση βρεθηκε και θα τηνπεριγραψω για να βοηθησουμε και αλλους.
1. Σωστα τα Header που δινουν φιλοι εδω μεσα αλλα εμενα προσωπικα δεν μου δουλεψανε (οχι τα headers αλλα τα encoding)

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

$headers  = 'MIME-Version&#58; 1.0' . "\r\n";
                          $headers .= 'Content-type&#58; text/html; charset=utf-8' . "\r\n";
                         $headers .= "From&#58; $email" . "\r\n";
οποτε το αλλαξα σε:
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/plain; charset=ISO-8859-7' . "\r\n";
$headers .= 'Content-transfer-encoding: BASE64 | Quoted-Printable' . "\r\n";
2. Στην συνεχεια ομως επρεπε να αλλαχθει και η contact.html απο:

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

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" 
σε:

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

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-7" 
και ετσι τελικα δουλεψε. Ελπιζω να δουλεψει και σε οποιους εχουν προβλημα.

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Php E-mail Script

Δημοσίευση από gvre » 27 Οκτ 2010 15:29

Αυτό είναι workaround και όχι λύση. Λύση είναι να χρησιμοποιείς παντού utf8.

Φτιάξε μια σελίδα και βάλε το

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

<?php
echo mb_internal_encoding&#40;&#41;;
?>
Αν το output ΔΕΝ είναι UTF-8 βάλε στην 1η γραμμή του email script σου το

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

mb_internal_encoding&#40;"UTF-8"&#41;;
και δοκίμασε ξανά (αφού πρώτα αλλάξεις το charset σε utf-8 και στην contact.html). Στείλε μήνυμα αν λειτουργεί ή όχι με αυτόν τον τρόπο.

hubman11
Δημοσιεύσεις: 12
Εγγραφή: 28 Ιαν 2010 18:40

Php E-mail Script

Δημοσίευση από hubman11 » 27 Οκτ 2010 22:11

ειχα δοκιμασει utf-8 αλλα δυστυχως δεν επαιρνα αποτελεσματα. Το περιεργο ηταν οτι αυτο δεν συνεβαινει παντου. Εννοω 3 διαφορετικες σελιδες σε διαφορετικους σερβερ στους 2 επαιζε το utf-8 στον τριτο ομως με τιποτα ο οποιος δουλευει squire mail και δουλεψε μονο με iso 8859 ενω οι αλλοι δυο και με χωρις headers δουλεψανε κανονικα.
Παντως ευχαριστω για την βοηθεια θα δοκιμασω με output και θα απαντησω
Δυστυχως γνωριζω καλα html και σχεδον καθολου php κατι που αρχιζει και μου αρεσει.

hubman11
Δημοσιεύσεις: 12
Εγγραφή: 28 Ιαν 2010 18:40

Php E-mail Script

Δημοσίευση από hubman11 » 27 Οκτ 2010 23:11

Τελικα δεν θελει να δουλεψει με utf 8 στον συγκεκριμενο σερβερ μονο ISO, το αποτελεσμα που παιρνω ειναι

Ξ&#732;Ξ±Ξ½Ξ±Ο&#402;Ξ·Ο&#8218;- Ξ&#8226;πιΟ&#402;ΞΊΞ΅Ο&#8230;Ξ·

Σημειωση: Το συγκεκριμενο script ειναι το ιδιο και για τους 3 σερβερ
Στους 2 παιζει utf-8 και χωρις headers ενω στον τριτο μονο iso και headers και αλλο ενα παραξενο ειναι μερικα σημεια του squirrelMail καπως ετσι:
‘½&#181;&#192;&#185;&#184;&#205;&#188;·&#196;· ·»&#181;&#186;&#196;&#193;&#191;½&#185;&#186;&#174; ±»»·»&#191;³&#193;±&#198;&#175;±
‘&#192;&#181;&#195;&#196;±»&#188;­½±
"&#185;±³&#193;±&#188;&#188;­½±

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

Php E-mail Script

Δημοσίευση από nbc » 28 Οκτ 2010 10:12

hubman11 έγραψε:οποτε το αλλαξα σε:
$headers .= 'Content-transfer-encoding: BASE64 | Quoted-Printable' . "\r\n";
Με αυτόν τον header, δεν θα έπρεπε να δουλεύει πουθενά.

Αφενός, το base64 είναι διαφορετικό encoding από το quoted-printable (ένα από τα δύο μπορεί να ισχύει, όχι και τα δύο), αφετέρου με έναν τέτοιον header θα έπρεπε να κωδικοποιήσεις το μήνυμα αντίστοιχα (κάτι μου λέει πως δεν το κάνεις).

Το σωστό είναι

$headers .= 'Content-transfer-encoding: 8bit' . "\r\n";

και δεν χρειάζεται κωδικοποίηση το μήνυμα.

hubman11
Δημοσιεύσεις: 12
Εγγραφή: 28 Ιαν 2010 18:40

Php E-mail Script

Δημοσίευση από hubman11 » 28 Οκτ 2010 13:02

nbc σωστη η παρατηρηση σου και η διορθωση σου αλλα δεν το ειχα προσεξει λογω δοκιμων που εκανα στην html και στο script για να δω τι θα μου δουλευε.
Ευχαριστω.

Απάντηση

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

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

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