Mail küldése PHP-ben (naná, hogy probléma)
Sziasztok!
Hát nagy fába vágtam ismét a fejszém. Aki olvasta azt a kevés hozzászólást amit ezidáig írtam, az tudja, hogy ez nem vicc.
Nos az alábbi, eléggé bonyolult PHP kóddal kívánok e-mailt küldeni.A mail el is megy, a postafiókba érkező eredmény már különböző, attól függően, hogy hová küldtem.
gmail: ékezetek rendben
freemail: ékezetes betűk helyén kriksz-krakszok
chello: ékezetes betűk helyén kérdőjelek
2 teljes napot szántam rá, hogy a megoldást megtaláljam, naná, hogy eredmény nélkül (Rain man). A neten gyakorlatilag nem találtam érdemleges írást a témában (meglehet, rosszul kerestem). Valami hasonló problémával foglalkozó beírást találtam itt a fórumon. Az ott leírtakat is kipróbáltam, persze eredmény nélkül :-)).
Khmm..., ha belegondolok, hogy ez egy néhány soros kód, a Windows pedig néhány gigán érkezik, akkor elborzadok.
Naná, hogy hálás lennék, ha valaki felvilágosítaná a setét agyam a probléma megoldásával kapcsolatban.
Üdv
■ Hát nagy fába vágtam ismét a fejszém. Aki olvasta azt a kevés hozzászólást amit ezidáig írtam, az tudja, hogy ez nem vicc.
Nos az alábbi, eléggé bonyolult PHP kóddal kívánok e-mailt küldeni.
<?php
$to = "akarki##kukac##freemail.hu";
$from = "valaki##kukac##freemail.hu";
$subject = "éáűúőí";
$message = "ez az üzenet: éáűúőóí";
$headers = "From: $from";
mail($to, $subject, $message, $headers);
?>
gmail: ékezetek rendben
freemail: ékezetes betűk helyén kriksz-krakszok
chello: ékezetes betűk helyén kérdőjelek
2 teljes napot szántam rá, hogy a megoldást megtaláljam, naná, hogy eredmény nélkül (Rain man). A neten gyakorlatilag nem találtam érdemleges írást a témában (meglehet, rosszul kerestem). Valami hasonló problémával foglalkozó beírást találtam itt a fórumon. Az ott leírtakat is kipróbáltam, persze eredmény nélkül :-)).
Khmm..., ha belegondolok, hogy ez egy néhány soros kód, a Windows pedig néhány gigán érkezik, akkor elborzadok.
Naná, hogy hálás lennék, ha valaki felvilágosítaná a setét agyam a probléma megoldásával kapcsolatban.
Üdv
Karakterkódolás
1. Meg kell adnod egy Content-Type fejlécet. Ez megoldja a tartalom problémát.
2. A subjectet mondjuk quoted printable kódolásba kell tenned és meg kell fejelned egy karakterkódolás előtaggal, pl így: =?UTF-8?Q?Subject...?=
+1 ha a fejléceid a felhasználótól jönnek, mint pl a from, akkor mindenképp vigyázz vele, mert ha csak úgy natúrban tud beszúrni bármit oda, akkor remekül spamelésre lehet majd használni a végeredményt.
Ja, és BUÉK.
válasz
És köszi az újévi jókívánságot, csak valahogy röhejesnek érzem, hogy kívángatunk egymásnak mindenféle jókat, miközben minden csak egyre rosszabb lesz.
Üdv
A jó szakember...
A jó szakember nem mindig tudja a megoldást fejből, de amit tud az az, hogy melyik könyvet kell levenni a polcról!
Tehát neked csak annyit kell tudnod, hogy vannak olyan könyvek => weboldalak, ahol megleled a megoldást!
pl.:
wikipedia.org E-mail
Php manuál Mail
google.hu php+email+format
s_volenszki
off:
Hogy hogyan éled meg az új évet (a poharad már félig üres vagy még félig tele van) az kizárólag rajtad múlik!
BUÉK
válasz
Kérlek mutasd meg, hogy az általad ajánlott
1. Php manuál Mail-ben hol szerepel az hogy, a helyes formátumú üzenet megjelenítéséhez szükséges a $headers = "Content-Type: text/plain; charset=utf-8"; sor. Ne keresgélj, mert sehol. Csak az van benne, hogy html tartalom esetén mi legyen benne.
2. A "google.hu php+email+format"-ot ugye te sem gondolod komolyan? Az ott kapott találatok nem foglalkoznak a magyar ékezetes karakterek problémájával.
3. Hab a tortán: ha a Google-ba beütöd a keresett megoldást, egyből ezer találatod lesz. Érdekes, nem?
Valóban, nem vagyok se informatikus mérnök, se számítástechnikai szakember, de a középiskolánál azért egy kicsit feljebb jutottam.
Egyébiránt hasonló jó éveket kívánok, mint az előzőek voltak!
Üdv
intuíció
Content-Type: text/plain;
charset=WINDOWS-1250;
ilyenkor már tudom hogy mire keressek rá.
Mellesleg 1. pont: php manuál mail-nél ott van amit keresel, de lenn a kommentek között. Sokszor érdemes ott kutakodni, sok szokásos problémára találsz megoldást. Szerintem teljesen rendben van hogy ez ott szerepel csak - nem a PHP dokumentálók feladata hogy mellékeljék a teljes MIME, SMTP, HTTP, HTML stb. szabványokat.
A dokumentáció nem oldja meg a problémádat,
Elemezzed a folyamatot, vizsgáld a különbséget jó és rossz kimenet, valamint jó és rossz kimenetet produkáló eljárások között!
Az ilyen helyzeteket nem csak és kizárólag informatikai és programozói tudással lehet megközelíteni! Én is gyártástechnológiából tanultam! ;)
Ha visszariaszt a google több ezer találata akkor próbáld meg a weblabor keresőjében a php+levélküldés keresőszavakat! Az első találat lesz a megoldás!
Php levelezés.
s_volenszki
ps.:
Köszönöm a jókívánságokat, Én mindent megteszek, hogy ez az évem legalább olyan jó legyen mint az előző! Sőt, még jobb!
emailek feépítése
Üdv,
Felhő
Vess erre egy pillantást, ékezetek tekintetében
kérdés
Nekem is a mail-lel volna gondom, méghozzá a következő.
A neten összeszedett infókból az alábbi php kódot sikerült összehoznom:
$targy = "XXX regisztráció aktiválás";
$szoveg = "
Kedves " . $_POST['nev'] . "!
A regisztrációd megerősítéséhez kattints az alábbi linkre, vagy másold be azt a böngésződ címsorába!
http://www.XXX.hu/azonositas.php?azonosito=" . $azonosito . "
Amenniyben 48 órán belül nem erősíted meg a regisztrációdat, adataid törlésre kerülnek az adatbázisból.
...";
$vonal = "\r\n";
$mailkitol = "XXX register";
$mailhonnan = "noreply##kukac##XXX.hu";
$targy = "=?UTF-8?B?" . base64_encode($targy) . "?=";
$mailkitol = "=?UTF-8?B?" . base64_encode($mailkitol) . "?=";
$fejlec = "";
$fejlec .= "MIME-Version: 1.0" . $vonal;
$fejlec .= "Content-type: text/plain; charset=UTF-8 " . $vonal;
$fejlec .= "From: " . $mailkitol . "<" . $mailhonnan . ">" . $vonal . $vonal;
if (mail($cim, $targy, $szoveg, $fejlec))
{ print("Elküldve"); }
else
{ print("<p>Az e-mail küldése sikertelen.</p>"); }
A fenti megoldással majdnem mindenhol szépen megy át az összes ékezetes karakter, a tárgyban és az üzenetben is, azonban a Mozilla Thunderbird a következőt produkálja:
Tárgy jó,
Feladó: -
Üzenet:
From: =?UTF-8?B?SEkgcmVnaXN0ZXI=?=<noreply##kukac##XXX.hu>
Message-Id: <20110522213230.782235801E##kukac##mail.XXX.hu>
Date: Sun, 22 May 2011 23:32:30 +0200 (CEST)
Kedves Engineer!
A regisztrĂĄciĂłd megerĹ�sĂtĂŠsĂŠhez kattints az alĂĄbbi linkre, vagy mĂĄsold be azt a bĂśngĂŠszĹ�d cĂmsorĂĄba!
http://www.XXX.hu/azonositas.php?azonosito=1253708698
Amenniyben 48 ĂłrĂĄn belĂźl nem erĹ�sĂted meg a regisztrĂĄciĂłdat, adataid tĂśrlĂŠsre kerĂźlnek az adatbĂĄzisbĂłl.
...
Kérdésem, hogy mi a probléma, illetve hogy mit keres a fejléc az üzenet törzsében?
Mail küldő osztály
forrás
X-Account-Key: account1
X-UIDL: UID766-1282199870
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
X-Mozilla-Keys:
Return-Path: <XXX##kukac##XXX.hu>
X-Original-To: engineer##kukac##XXX.hu
Delivered-To: YYY##kukac##XXX.hu
Received: by mail.XXX.hu (Postfix, from userid 10104)
id 782235801E; Sun, 22 May 2011 23:32:30 +0200 (CEST)
To: engineer##kukac##XXX.hu
Subject: =?UTF-8?B?SEkgcmVnaXN6dHLDoWNpw7MgYWt0aXbDoWzDoXM=?=
MIME-Version: 1.0
Content-type: text/plain; charset=UTF-8
From: =?UTF-8?B?SEkgcmVnaXN0ZXI=?=<noreply##kukac##XXX.hu>
Message-Id: <20110522213230.782235801E##kukac##mail.XXX.hu>
Date: Sun, 22 May 2011 23:32:30 +0200 (CEST)
Kedves Engineer!
A regisztrĂĄciĂłd megerĹ�sĂtĂŠsĂŠhez kattints az alĂĄbbi linkre, vagy mĂĄsold be azt a bĂśngĂŠszĹ�d cĂmsorĂĄba!
http://www.XXX.hu/azonositas.php?azonosito=1253708698
Amenniyben 48 ĂłrĂĄn belĂźl nem erĹ�sĂted meg a regisztrĂĄciĂłdat, adataid tĂśrlĂŠsre kerĂźlnek az adatbĂĄzisbĂłl.
...
Üres sor
Return-Path
és az üzenet törzse között lennie. Ez okozhatja a problémát.vagyis...
A $vonal változót szedd ki a
ezzel nem oldódik meg
Szépen eltűntek a fejléc sorai az üzenetem törzséből, viszont mivel megszűnt közöttük a sortörés, nem is funkcionáltak többé.
Az ékezetes karakterek továbbra sem jöttek rendbe.
Egyéb ötlet?
2 $vonal
ha csak egy $vonal van ...
Márpedig valahol van egy
Mondjuk ha kiíratnád a $fejlec változót viszonylag egyszerűen ki lehetne debugolni. Látszik, hogy az egyes sorok között is dupla sorközök vannak.
De ha megoldottad phpmailerrel, akkor ne foglalkozz vele.
lehet hogy ...
Sok helyen olvastam, hogy annak ellenére, hogy a \r\n a szabvány, simán \n -el jobban működik a mail().
PHPmailer
Igazatok volt, ezzel csak feleannyit szívtam, és most már minden szépen működik.