PHP mail

Sziasztok Everybody!

Ha valaki tud segítsen!!

Volna egy miniwebshop. az egészet http://nopdesign.com/freecart/ -al oldottam meg.

működik.

viszont a rendelt tételeket és a rendelő adatait phpmail-el továbbítom a rendelőnek és a tulajnak.

azok az adatok amelyek a php fileban vannak ékezetes betűkkel mint az üzenet részei pl ez: a megrendelő neve:
azok olvashatóak.

De a megrendelő tényleges neve (nem ez a kiírás) a html oldalról egy form-ból jönnek.

És minden adat amit el akarok küldeni és a html fileból származik csúnya krixkrax az ékezetes betűk helyett az elküldött emailben, ami eleve ékezetesen van írva a phpfileba az nem.

a php, a html és még a .htaccessben is utf-8 kódolást állítottam be. az utóbbiban a javascripekre mert a nopcart motorja java.

Ha utf-16 ra állítottam a karakterkódolást akkor a html file a neten olvashatatlan volt de az onnan származó adatok a mailben kristálytiszták...

Valaki?...... találkozott már ilyennel?

marrci

Hozzászólások

Gondolom phpmail alatt ezt érted. Ez esetben mit állítasz be headernek, ott adsz meg karakterkódolást? Ha teheted használj inkább PHPMailert, vagy legalább próbáld meg azzal elküldeni tesztként, mert abban lehet állítnani a karakterkódolást. Esetleg azt nézd meg, hogy a formból kapott adatokat kiírtod a böngészőbe egy header("Content-Type: text/html; charset=utf-8"); társaságában, hogy valóban utf8-e az adat ami a form felől jön, + megnézheted ezzel pl, hogy a kiküldött karakterkódolás milyen a formnál.

java'nother blog

Akkor te még nem találkoztál a sendmail.php csodaprogrammal, amivel rengeteget spam-elnek. Ugyanis ennek a remek példaprogramnak, ami kering a neten van egy olyan apró hibája, hogy nem ellenőrzi a beadott mail címet, és emiatt remekül meg lehet POST -olni egy olyannal hogy: x@x.x\\n(szándékosan újsor)To: (ide jöhetnek a remek emailcímek, ahova spam-elni akarunk). Persze a tartalomba is belerombol...

A php mail() függvényét használva az extra headerben beállítod rendesen az additional parametersben (negyedik paraméter) a charsetet? Mert ha nem, akkor a levelező program nem fog értesülni róla, hogy milyen kódlappal kellene megjelenítenie (a küldő weblap fejlécét ugye nem látja...).

$fejlecek = 'MIME-Version: 1.0' . "\r\n";
$fejlecek .= 'Content-type: text/html; charset=utf-8' . "\r\n";
mail('kinek','tárgy','üzenet',$fejlecek);

Nekem menni szokott, ilyenekért nem include-olnék egy phpmailert, én sem lopom a memóriát :) Más, ha komolyabb leveleket küldesz csatolmányokkal.

http://haxel.hu/wodehouse-konyvek.html

Akkor talán valamelyik adatot konvertáld, hogy mind egyforma legyen.

--
Joe

Hello

itt van a php file.

tartalma


<?php

// To send HTML mail, the Content-type header must be set
$mailheaders = 'MIME-Version: 1.0' . "\r\n";
$mailheaders .= 'Content-Type: text/plain; charset=8859-1' . "\r\n";

$youremail = "...";
$formurl = "...";
$errorurl = "...";
$thankyouurl = "...";

// subject
$subject = '...';

$b_first = $_POST['b_first'] ;
$b_addr = $_POST['b_addr'] ;
$b_city = $_POST['b_city'] ;
$b_state = $_POST['b_state'] ;
$b_zip = $_POST['b_zip'] ;
$b_phone = $_POST['b_phone'] ;
$b_email = $_POST['b_email'] ;

$s_first = $_POST['s_first'] ;
$s_addr = $_POST['s_addr'] ;
$s_city = $_POST['s_city'] ;
$s_state = $_POST['s_state'] ;
$s_zip = $_POST['s_zip'] ;
$s_phone = $_POST['s_phone'] ;
$s_email = $_POST['s_email'] ;

$atvetel = $_POST['atvetel'] ;

$QUANTITY_1 = $_POST['QUANTITY_1'] ;
$QUANTITY_2 = $_POST['QUANTITY_2'] ;
$QUANTITY_3 = $_POST['QUANTITY_3'] ;
$QUANTITY_4 = $_POST['QUANTITY_4'] ;
$QUANTITY_5 = $_POST['QUANTITY_5'] ;
$QUANTITY_6 = $_POST['QUANTITY_6'] ;
$QUANTITY_7 = $_POST['QUANTITY_7'] ;
$QUANTITY_8 = $_POST['QUANTITY_8'] ;
$QUANTITY_9 = $_POST['QUANTITY_9'] ;
$QUANTITY_10 = $_POST['QUANTITY_10'] ;
$QUANTITY_11 = $_POST['QUANTITY_11'] ;
$QUANTITY_12 = $_POST['QUANTITY_12'] ;
$QUANTITY_13 = $_POST['QUANTITY_13'] ;
$QUANTITY_14 = $_POST['QUANTITY_14'] ;
$QUANTITY_15 = $_POST['QUANTITY_15'] ;
$QUANTITY_16 = $_POST['QUANTITY_16'] ;
$QUANTITY_17 = $_POST['QUANTITY_17'] ;
$QUANTITY_18 = $_POST['QUANTITY_18'] ;
$QUANTITY_19 = $_POST['QUANTITY_19'] ;
$QUANTITY_20 = $_POST['QUANTITY_20'] ;
$QUANTITY_21 = $_POST['QUANTITY_21'] ;
$QUANTITY_22 = $_POST['QUANTITY_22'] ;
$QUANTITY_23 = $_POST['QUANTITY_23'] ;
$QUANTITY_24 = $_POST['QUANTITY_24'] ;
$QUANTITY_25 = $_POST['QUANTITY_25'] ;

$PRICE_1 = $_POST['PRICE_1'] ;
$PRICE_2 = $_POST['PRICE_2'] ;
$PRICE_3 = $_POST['PRICE_3'] ;
$PRICE_4 = $_POST['PRICE_4'] ;
$PRICE_5 = $_POST['PRICE_5'] ;
$PRICE_6 = $_POST['PRICE_6'] ;
$PRICE_7 = $_POST['PRICE_7'] ;
$PRICE_8 = $_POST['PRICE_8'] ;
$PRICE_9 = $_POST['PRICE_9'] ;
$PRICE_10 = $_POST['PRICE_10'] ;
$PRICE_11 = $_POST['PRICE_11'] ;
$PRICE_12 = $_POST['PRICE_12'] ;
$PRICE_13 = $_POST['PRICE_13'] ;
$PRICE_14 = $_POST['PRICE_14'] ;
$PRICE_15 = $_POST['PRICE_15'] ;
$PRICE_16 = $_POST['PRICE_16'] ;
$PRICE_17 = $_POST['PRICE_17'] ;
$PRICE_18 = $_POST['PRICE_18'] ;
$PRICE_19 = $_POST['PRICE_19'] ;
$PRICE_20 = $_POST['PRICE_20'] ;
$PRICE_21 = $_POST['PRICE_21'] ;
$PRICE_22 = $_POST['PRICE_22'] ;
$PRICE_23 = $_POST['PRICE_23'] ;
$PRICE_24 = $_POST['PRICE_24'] ;
$PRICE_25 = $_POST['PRICE_25'] ;

$ID_1 = $_POST['ID_1'] ;
$ID_2 = $_POST['ID_2'] ;
$ID_3 = $_POST['ID_3'] ;
$ID_4 = $_POST['ID_4'] ;
$ID_5 = $_POST['ID_5'] ;
$ID_6 = $_POST['ID_6'] ;
$ID_7 = $_POST['ID_7'] ;
$ID_8 = $_POST['ID_8'] ;
$ID_9 = $_POST['ID_9'] ;
$ID_11 = $_POST['ID_10'] ;
$ID_11 = $_POST['ID_11'] ;
$ID_12 = $_POST['ID_12'] ;
$ID_13 = $_POST['ID_13'] ;
$ID_14 = $_POST['ID_14'] ;
$ID_15 = $_POST['ID_15'] ;
$ID_16 = $_POST['ID_16'] ;
$ID_17 = $_POST['ID_17'] ;
$ID_18 = $_POST['ID_18'] ;
$ID_19 = $_POST['ID_19'] ;
$ID_20 = $_POST['ID_20'] ;
$ID_21 = $_POST['ID_21'] ;
$ID_22 = $_POST['ID_22'] ;
$ID_23 = $_POST['ID_23'] ;
$ID_24 = $_POST['ID_24'] ;
$ID_25 = $_POST['ID_25'] ;

$NAME_1 = $_POST['NAME_1'] ;
$NAME_2 = $_POST['NAME_2'] ;
$NAME_3 = $_POST['NAME_3'] ;
$NAME_4 = $_POST['NAME_4'] ;
$NAME_5 = $_POST['NAME_5'] ;
$NAME_6 = $_POST['NAME_6'] ;
$NAME_7 = $_POST['NAME_7'] ;
$NAME_8 = $_POST['NAME_8'] ;
$NAME_9 = $_POST['NAME_9'] ;
$NAME_10 = $_POST['NAME_10'] ;
$NAME_11 = $_POST['NAME_11'] ;
$NAME_12 = $_POST['NAME_12'] ;
$NAME_13 = $_POST['NAME_13'] ;
$NAME_14 = $_POST['NAME_14'] ;
$NAME_15 = $_POST['NAME_15'] ;
$NAME_16 = $_POST['NAME_16'] ;
$NAME_17 = $_POST['NAME_17'] ;
$NAME_18 = $_POST['NAME_18'] ;
$NAME_19 = $_POST['NAME_19'] ;
$NAME_20 = $_POST['NAME_20'] ;
$NAME_21 = $_POST['NAME_21'] ;
$NAME_22 = $_POST['NAME_22'] ;
$NAME_23 = $_POST['NAME_23'] ;
$NAME_24 = $_POST['NAME_24'] ;
$NAME_25 = $_POST['NAME_25'] ;

$ADDTLINFO_1 = $_POST['ADDTLINFO_1'] ;
$ADDTLINFO_2 = $_POST['ADDTLINFO_2'] ;
$ADDTLINFO_3 = $_POST['ADDTLINFO_3'] ;
$ADDTLINFO_4 = $_POST['ADDTLINFO_4'] ;
$ADDTLINFO_5 = $_POST['ADDTLINFO_5'] ;
$ADDTLINFO_6 = $_POST['ADDTLINFO_6'] ;
$ADDTLINFO_7 = $_POST['ADDTLINFO_7'] ;
$ADDTLINFO_8 = $_POST['ADDTLINFO_8'] ;
$ADDTLINFO_9 = $_POST['ADDTLINFO_9'] ;
$ADDTLINFO_10 = $_POST['ADDTLINFO_10'] ;
$ADDTLINFO_11 = $_POST['ADDTLINFO_11'] ;
$ADDTLINFO_12 = $_POST['ADDTLINFO_12'] ;
$ADDTLINFO_13 = $_POST['ADDTLINFO_13'] ;
$ADDTLINFO_14 = $_POST['ADDTLINFO_14'] ;
$ADDTLINFO_15 = $_POST['ADDTLINFO_15'] ;
$ADDTLINFO_16 = $_POST['ADDTLINFO_16'] ;
$ADDTLINFO_17 = $_POST['ADDTLINFO_17'] ;
$ADDTLINFO_18 = $_POST['ADDTLINFO_18'] ;
$ADDTLINFO_19 = $_POST['ADDTLINFO_19'] ;
$ADDTLINFO_20 = $_POST['ADDTLINFO_20'] ;
$ADDTLINFO_21 = $_POST['ADDTLINFO_21'] ;
$ADDTLINFO_22 = $_POST['ADDTLINFO_22'] ;
$ADDTLINFO_23 = $_POST['ADDTLINFO_23'] ;
$ADDTLINFO_24 = $_POST['ADDTLINFO_24'] ;
$ADDTLINFO_25 = $_POST['ADDTLINFO_25'] ;

$SUBTOTAL = $_POST['SUBTOTAL'] ;
$TOTAL = $_POST['TOTAL'] ;
$comment = $_POST['comment'] ;

if (empty($b_first) || empty($b_addr) || empty($b_city) || empty($b_state) || empty($b_zip) || empty($b_phone) || empty($b_email)) {
header( "Location: $errorurl" );
exit ;
}

if (isset($_POST['atvetel'])) {echo 'checked';}

$today = date ("Y F jS, l");

// message

$strMessageBody = "";
$strMessageBody .= "Dátum: $today \n";
$strMessageBody .= " \n";
$strMessageBody .= "Számlázási adatok: \n";
$strMessageBody .= "-------- \n";
$strMessageBody .= "Név: $b_first \n";
$strMessageBody .= "Cím: $b_addr \n";
$strMessageBody .= "Város: $b_city \n";
$strMessageBody .= "Megye: $b_state \n";
$strMessageBody .= "Irsz.: $b_zip \n";
$strMessageBody .= "Telefon: $b_phone \n";
$strMessageBody .= "E-mail: $b_email \n";
$strMessageBody .= " \n";
$strMessageBody .= "Szállítási adatok (ha különböző): \n";
$strMessageBody .= "-------- \n";
$strMessageBody .= "Név: $s_first \n";
$strMessageBody .= "Cím: $s_addr \n";
$strMessageBody .= "Város: $s_city \n";
$strMessageBody .= "Megye: $s_state \n";
$strMessageBody .= "Irsz.: $s_zip \n";
$strMessageBody .= "Telefon: $s_phone \n";
$strMessageBody .= "E-mail: $s_email \n";
$strMessageBody .= " \n";
$strMessageBody .= "Átvétel módja: $atvetel \n";
$strMessageBody .= " \n";
$strMessageBody .= "Mennyiség(db) Ár(forint) Termék kód - Termék név\n";
$strMessageBody .= "===================================================================== \n";
$strMessageBody .= "$QUANTITY_1 $PRICE_1 $ID_1 - $NAME_1 $ADDTLINFO_1 \n";
if( $NAME_2 ) {$strMessageBody .= "$QUANTITY_2 $PRICE_2 $ID_2 - $NAME_2 $ADDTLINFO_2 \n";}
if( $NAME_3 ) {$strMessageBody .= "$QUANTITY_3 $PRICE_3 $ID_3 - $NAME_3 $ADDTLINFO_3 \n";}
if( $NAME_4 ) {$strMessageBody .= "$QUANTITY_4 $PRICE_4 $ID_4 - $NAME_4 $ADDTLINFO_4 \n";}
if( $NAME_5 ) {$strMessageBody .= "$QUANTITY_5 $PRICE_5 $ID_5 - $NAME_5 $ADDTLINFO_5 \n";}
if( $NAME_6 ) {$strMessageBody .= "$QUANTITY_6 $PRICE_6 $ID_6 - $NAME_6 $ADDTLINFO_6 \n";}
if( $NAME_7 ) {$strMessageBody .= "$QUANTITY_7 $PRICE_7 $ID_7 - $NAME_7 $ADDTLINFO_7 \n";}
if( $NAME_8 ) {$strMessageBody .= "$QUANTITY_8 $PRICE_8 $ID_8 - $NAME_8 $ADDTLINFO_8 \n";}
if( $NAME_9 ) {$strMessageBody .= "$QUANTITY_9 $PRICE_9 $ID_9 - $NAME_9 $ADDTLINFO_9 \n";}
if( $NAME_10 ){$strMessageBody .= "$QUANTITY_10 $PRICE_10 $ID_10 - $NAME_10 $ADDTLINFO_10 \n";}
if( $NAME_11 ){$strMessageBody .= "$QUANTITY_11 $PRICE_11 $ID_11 - $NAME_11 $ADDTLINFO_11 \n";}
if( $NAME_12 ){$strMessageBody .= "$QUANTITY_12 $PRICE_12 $ID_12 - $NAME_12 $ADDTLINFO_12 \n";}
if( $NAME_13 ){$strMessageBody .= "$QUANTITY_13 $PRICE_13 $ID_13 - $NAME_13 $ADDTLINFO_13 \n";}
if( $NAME_13 ){$strMessageBody .= "$QUANTITY_14 $PRICE_14 $ID_14 - $NAME_14 $ADDTLINFO_14 \n";}
if( $NAME_13 ){$strMessageBody .= "$QUANTITY_15 $PRICE_15 $ID_15 - $NAME_15 $ADDTLINFO_15 \n";}
if( $NAME_13 ){$strMessageBody .= "$QUANTITY_16 $PRICE_16 $ID_16 - $NAME_16 $ADDTLINFO_16 \n";}
if( $NAME_13 ){$strMessageBody .= "$QUANTITY_17 $PRICE_17 $ID_17 - $NAME_17 $ADDTLINFO_17 \n";}
if( $NAME_13 ){$strMessageBody .= "$QUANTITY_18 $PRICE_18 $ID_18 - $NAME_18 $ADDTLINFO_18 \n";}
if( $NAME_13 ){$strMessageBody .= "$QUANTITY_19 $PRICE_19 $ID_19 - $NAME_19 $ADDTLINFO_19 \n";}
if( $NAME_13 ){$strMessageBody .= "$QUANTITY_20 $PRICE_20 $ID_20 - $NAME_20 $ADDTLINFO_20 \n";}
if( $NAME_13 ){$strMessageBody .= "$QUANTITY_21 $PRICE_21 $ID_21 - $NAME_21 $ADDTLINFO_21 \n";}
if( $NAME_13 ){$strMessageBody .= "$QUANTITY_22 $PRICE_22 $ID_22 - $NAME_22 $ADDTLINFO_22 \n";}
if( $NAME_13 ){$strMessageBody .= "$QUANTITY_23 $PRICE_23 $ID_23 - $NAME_23 $ADDTLINFO_23 \n";}
if( $NAME_13 ){$strMessageBody .= "$QUANTITY_24 $PRICE_24 $ID_24 - $NAME_24 $ADDTLINFO_24 \n";}
if( $NAME_13 ){$strMessageBody .= "$QUANTITY_25 $PRICE_25 $ID_25 - $NAME_25 $ADDTLINFO_25 \n";}
$strMessageBody .= "===================================================================== \n";
$strMessageBody .= "SUBTOTAL: $SUBTOTAL \n";
$strMessageBody .= "TOTAL: $TOTAL \n";
$strMessageBody .= "\n";
$strMessageBody .= "A feladó üzenete: \n";
$strMessageBody .= "--------- \n";
$strMessageBody .= "$comment \n";
$strMessageBody .= " \n";

//# Send email order to you...
$mailheaders = "From: $b_email\r\n";
$mailheaders .= "X-Mailer: PHP Mail generated by:NOP Design Shopping Cart\r\n";
mail($youremail, $subject, $strMessageBody, $mailheaders);

//# Send email conformation to the customer.....

$mailheaders = "From: $youremail\r\n";
$mailheaders .= "X-Mailer: PHP Mail generated by:NOP Design Shopping Cart\r\n";
mail($b_email, $subject, $strMessageBody, $mailheaders);

header( "Location: $thankyouurl" );
exit ;
?>

A headerben utf-8 van beállítva csak az utóbbi napokban a 8859-1 el próbálkoztam hogy az úgy működik e. az is jó lenne ha ékezetek nélkül tudnám továbbítani.....

tartozik ehhez a scripthez egy pearl file is (a php helyett) azzal esetleg érdemes lenne próbálkozni?

$mailheaders .= 'Content-Type: text/plain; charset=8859-1' . "\r\n";
@

ebben a sorban csak véletlenül maradt az angol kódlap.

a lényeg a lényeg, nem működik utf-8 al.
arra is gondoltam hogy a html fileban van a hiba te azt is átnéztem már többször is.

bocs a hibás közlésért.

Hol kereshetem még a hibát? ha a php és a html rendben van?

Fogj egy hexeditort, és nézd meg, hogy a levélben mi van byteról-bytera.

Ha az ékezetes betűk több byteosak, de mégsem jelenik meg jól, akkor csak két lehetőség van:
- syntax error van a content-type charset deklarációban
- az editorod/mail kliensed nem kezeli az utf-8-at

Ha hexeditben egy byteos csak az ékezetes betű, akkor valójában nem is utf-8-ban küldöd, így utf-8-ban nem is fog jól megjelenni.
Hol definiálod azt a stringet, ami küldesz? (Attól, hogy pl. az adatbázis oszlop utf-8, attól még te hibásan, beletehetsz 8859-2-es karaktereket. Az adatbázis oszlop típusa nem azt jelöli, mit tárol az adatbázis, neki minden csak bytesorozat, annak nincs kódolása. Hanem az azt jelzi, hogy ilyet tegyél bele, mert aki olvasni fogja, az ezt a kódolást fogja feltételezni ezen metaadat alapján.)
Pl. a php forrásfileja, az utf-8? Az a tippem, hogy a php-ban az ékezetes karakterek amiket leírsz, amiket küldesz, az mondjuk cp-1252, nos ha az megérkezik, az se ascii, se utf-8-ként megjelenítve nem fog jól mutatni. A forrásfilejaidat, az adatbázisban tárolt stringeket, és a használt charseteket (html content-type <->html body, http response content-type<->http response body, mail content-type<->mail body, db connection encoding, table column encoding, ***és a saját forráskódjaid - az is text*** állítsd mind utf-8ra. Vagy akár cp-traditional-chinesera, csak legyen konzisztens.

--
The Net is indeed vast and infinite...
http://gablog.eu

( marrci | 2010. február 8., hétfő - 22:08 )
viszont a rendelt tételeket és a rendelő adatait phpmail-el továbbítom a rendelőnek és a tulajnak.
@

Ez remek! De remelem azert ettol fuggetlenul minden rendelest el is mentesz a szerveren, azokra az esetekre ha megsem erkeznenek meg a levelek a cimzettekhez az internet es szamitastechnika kulonos szeszelyei folytan! Es akar ujbol ki is tudod kuldeni a problemas leveleket, ugye?

Szerintem az editorod karakterkodolasa szar, azt nezted mar?

>>Atyaisten...<<
Szerintem is :)

>>Tell your parents not to ruin the world that you will live in.<<

A szerkesztőm karakterkódolása ansira volt állítva.......

MINDENT elmentettem utf-8 kódolással

a php üzenetküldőt
a java scriptet
és a html fileokat

...................

csodák csodája gyönyöhűen ékeskednek az ékezetek..

Köszönöm az idefigyelést és a tanácsokat, hasznosak voltak! Köszönöm!

marrci

Csak most a freemail ba**axik..............