Autor Zpráva
jaroushit
Profil *
Zdravím, potřeboval bych poradit.. Mám následující php soubor pro odesílání e-mailů z databáze, ale u poslaných mailů nefunguje diakritika(->zobrazení nečitelných znaků). Nevím co s tím (jsem začátečník) ..

<?
$host="sql.pipni.cz";
$uziv="hbgang.com";
$heslo="*****";


$spoj = mysql_connect($host,$uziv,$heslo);
if(!$spoj) echo "outputs=error";

$vys = mysql_db_query ("hbgang_com", "SELECT email FROM databaze");
if(!$vys) echo "outputs=error";

while($e = mysql_fetch_array($vys)):

$subject = $HTTP_POST_VARS['mail_predmet'];
$message = $HTTP_POST_VARS['mail_zprava']."ěščřžýáíé";
$to = $e["email"];
mail($to, $subject, $message, "From: H.B.Gang NEWSLETTER <newsletter@hbgang.com>");

endwhile;

echo "outputs=sent";

?>
jaroushit
Profil *
odesílání e-mailů z databáze
ještě upřesním: v mysql mám databáti e-mailů, na které píšu zprávy z formuláře..
denCo
Profil
pošli ten mail s touto hlavičkou
$hlavicka = "From: H.B.Gang NEWSLETTER <newsletter@hbgang.com>";
$hlavicka .= "Content-Type: text/plain; charset=utf-8\r\n";
mail($to, $subject, $message, $hlavicka);
jaroushit
Profil *
Funguje to tak napůl...(pouze ve zprávě a jen v tom $HTTP_POST_VARS['mail_zprava'] - to vložené "ěščřžýáíé" se nezobrazuje. Jinak předmět je pořád nečitelný). Mám tam teď tohle:

<?
$host="sql.pipni.cz";
$uziv="hbgang.com";
$heslo="*****";


$spoj = mysql_connect($host,$uziv,$heslo);
if(!$spoj) echo "outputs=error";

$vys = mysql_db_query ("hbgang_com", "SELECT email FROM databaze");
if(!$vys) echo "outputs=error";

while($e = mysql_fetch_array($vys)):
$hlavicka = "Content-Type: text/plain; charset=utf-8\r\n";
$subject = $HTTP_POST_VARS['mail_predmet'];
$message = $HTTP_POST_VARS['mail_zprava']."ěščřžýáíé";
$to = $e["email"];
mail($to, $subject, $message, $hlavicka."From: H.B.Gang NEWSLETTER <newsletter@hbgang.com>");

endwhile;

echo "outputs=sent";

?>
jaroushit
Profil *
(To tvoje mi nějak vůbec ani neodešle ten mail)
jaroushit
Profil *
Jo, tak jsem zjistil že ten můj druhej zápis to odesílá všechno v pohodě kromě teda toho předmětu.. :(
king26
Profil
FAQ: http://diskuse.jakpsatweb.cz/?action=vthread&forum=9&topic=2111&page=-1#3
jaroushit
Profil *
Udělal jsem to podle toho ale mám pořád stejný problém:( Teď skript vypadá takto:


<?

function autoUTF($s)
{
    // detect UTF-8
    if (preg_match('#[\x80-\x{1FF}\x{2000}-\x{3FFF}]#u', $s))
        return $s;
    // detect WINDOWS-1250
    if (preg_match('#[\x7F-\x9F\xBC]#', $s))
        return iconv('WINDOWS-1250', 'UTF-8', $s);
    // assume ISO-8859-2
    return iconv('ISO-8859-2', 'UTF-8', $s);
}

function cs_mail ($to, $subject, $message, $head = "")
       {  $predmet = "=?utf-8?B?".base64_encode(autoUTF ($predmet))."?=";
          $head .= "MIME-Version: 1.0\n";
          $head .= "Content-Type: text/plain; charset=\"utf-8\"\n";
          $head .= "Content-Transfer-Encoding: base64\n";
          $message = base64_encode (autoUTF ($message));
          return mail ($to, $subject, $message, $head); }


$host="sql.pipni.cz";
$uziv="hbgang.com";
$heslo="*****";


$spoj = mysql_connect($host,$uziv,$heslo);
if(!$spoj) echo "outputs=error";

$vys = mysql_db_query ("hbgang_com", "SELECT email FROM databaze");
if(!$vys) echo "outputs=error";

while($e = mysql_fetch_array($vys)):


$subject = $HTTP_POST_VARS['mail_predmet']."-ěščřžýáíé";
$message = $HTTP_POST_VARS['mail_zprava']."-ěščřžýáíé";
$to = $e["email"];

$kon = cs_mail ($to, $subject, $message, "From: H.B.Gang NEWSLETTER <newsletter@hbgang.com>");

if ($kon)
  echo "outputs=sent";
 else
  echo "outputs=error";		  
		  

endwhile;

echo "outputs=sent";

?>
Alphard
Profil
jaroushit:
Máte stránku, ze které berete data, a tento script ve stejném kódování? Je poškozená až ta část -ěščřžýáíé nebo už i to předchozí?
jaroushit
Profil *
Mělo by být vše v UTF-8.. Poškozené je obojí. Data beru z flash formuláře - nemůže být problém v tom?
Alphard
Profil
jaroushit:
Mělo by stačit, že je kódování konzistentní. Zkoušel jste ten text přímo vypsat?
Zkuste to takhle, jestli je obojí v utf, mělo by to jít.
function cs_mail ($to, $subject, $message, $head = "")
       {  $predmet = "=?utf-8?B?".base64_encode($predmet)."?=";
          $head .= "MIME-Version: 1.0\n";
          $head .= "Content-Type: text/plain; charset=\"utf-8\"\n";
          $head .= "Content-Transfer-Encoding: base64\n";
          $message = base64_encode ($message);
          return mail ($to, $subject, $message, $head); }
jaroushit
Profil *
Nic se tím nezměnilo. Vypsat text jsem nezkoušel (popravdě řečeno ani nevím jak se to dělá)..

Kód teď vypadá takto:

<?

function autoUTF($s)
{
    // detect UTF-8
    if (preg_match('#[\x80-\x{1FF}\x{2000}-\x{3FFF}]#u', $s))
        return $s;
    // detect WINDOWS-1250
    if (preg_match('#[\x7F-\x9F\xBC]#', $s))
        return iconv('WINDOWS-1250', 'UTF-8', $s);
    // assume ISO-8859-2
    return iconv('ISO-8859-2', 'UTF-8', $s);
}

function cs_mail ($to, $subject, $message, $head = "")
       {  $predmet = "=?utf-8?B?".base64_encode($predmet)."?=";
          $head .= "MIME-Version: 1.0\n";
          $head .= "Content-Type: text/plain; charset=\"utf-8\"\n";
          $head .= "Content-Transfer-Encoding: base64\n";
          $message = base64_encode ($message);
          return mail ($to, $subject, $message, $head); }

$host="sql.pipni.cz";
$uziv="hbgang.com";
$heslo="*****";


$spoj = mysql_connect($host,$uziv,$heslo);
if(!$spoj) echo "outputs=error";

$vys = mysql_db_query ("hbgang_com", "SELECT email FROM databaze");
if(!$vys) echo "outputs=error";

while($e = mysql_fetch_array($vys)):


$subject = $HTTP_POST_VARS['mail_predmet']."-ěščřžýáíé";
$message = $HTTP_POST_VARS['mail_zprava']."-ěščřžýáíé";
$to = $e["email"];

$kon = cs_mail ($to, $subject, $message, "From: H.B.Gang NEWSLETTER <newsletter@hbgang.com>");

if ($kon)
  echo "outputs=sent";
 else
  echo "outputs=error";          
          

endwhile;

echo "outputs=sent";

?>
jaroushit
Profil *
POVEDLO SE! Všimnul jsem si chyby v tom skriptu, co jste mi poslal a opravil ji a ono to funguje!:) místo $predmet jsem dal $subject ... Díky moc!;)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: