Zdravim, mam problém jako spousta jiných s diakritikou ve funkci mail(), potřebuju správnou diakritiku pro UTF-8 a nepotřebuju odpověď tipu změň si diakritiku na windows-1250 apod.! Předem moc děkuju.
Fórum › PHP
Kodování emailu, utf-8; mail
To mi bohužel moc nepomhlo :smile11:, de o to že pokud použiju funkci mail() tak jak je v php již přednastavená tak e-mail zaslaný přes tuto funkci, která je na stránce která běží na UTF-8, tak nebude fungovat diakritika(české znaky).
Použij třeba PHPMailer (http://sourceforge.net/projects/phpmailer/), ušetří ti spoustu starostí a dobře se s ním pracuje.
Tohle jsem nedávno splácal podle článku na builderu a řekl bych že to funguje docela slušně. :)
Posílá to textový / HTML emaily (parametr $HTML) i s přílohama ($Attach, s tím že se očekává pole polí s již načteným souborem, mime typem a názvem souboru). Víc asi není potřeba vykládat. :)
function UTF8Mail( $To, $Subject, $Message, $From, $FromName, $HTML = false, $Attach = null )
{
/*
$Attach = array
(
array( 'name' => 'file name', 'content' => 'file content', 'mime_type' => 'mime/type' )
...
);
*/
$Boundary = strtoupper( md5( uniqid( 'bound_' ) ) );
$Header = "From: $From\n";
$Header .= "MIME-version: 1.0\n";
$Header .= "Return-Path: <$From>\n";
$Header .= "Reply-To: $From\n";
$Header .= "Content-Type: multipart/mixed; boundary=\"$Boundary\"\n\n";
$Header .= "--" . $Boundary . "\n";
$Header .= "Content-Type: text/" . ( ( $HTML ) ? ( 'html' ) : ( 'plain' ) ) . "; charset=\"UTF-8\"\n";
$Header .= "Content-Transfer-Encoding: base64\n\n";
$Header .= base64_encode( $Message ) . "\n\n";
if ( is_array( $Attach ) )
{
reset( $Attach );
for ( $i = 0; $i < count( $Attach ); ++ $i )
{
if ( $Attach[ key( $Attach ) ][ 'content' ] && $Attach[ key( $Attach ) ][ 'name' ] )
{
$Header .= "--" . $Boundary . "\n";
$Header .= "Content-Type: " . ( ( $Attach[ key( $Attach ) ][ 'mime_type' ] ) ? ( $Attach[ key( $Attach ) ][ 'mime_type' ] ) : ( 'application/octet-stream' ) ) . ";\n";
$Header .= "Content-Transfer-Encoding: base64\n";
$Header .= "Content-Disposition: attachment; filename=\"" . $Attach[ key( $Attach ) ][ 'name' ] . "\"\n\n";
$Header .= chunk_split( base64_encode( $Attach[ key( $Attach ) ][ 'content' ] ) ) . "\n\n";
}
else
{
return false;
}
next( $Attach );
}
}
$Header .= "--" . $Boundary . "--";
return mail( $To, '=?UTF-8?B?' . base64_encode( $Subject ) . '?=', "", $Header );
}
jistě, omlouvam se...
function autoUTF($s){
if (preg_match('#[\x80-\x{1FF}\x{2000}-\x{3FFF}]#u', $s))
return $s;
if (preg_match('#[\x7F-\x9F\xBC]#', $s))
return iconv('WINDOWS-1250', 'UTF-8', $s);
return iconv('ISO-8859-2', 'UTF-8', $s);
}
function cs_mail ($prijemce, $predmet, $zprava, $head = ""){
$predmet = "=?utf-8?B?".base64_encode(autoUTF ($predmet))."?=";
$head .= "From:email@server.com\n";
$head .= "MIME-Version: 1.0\n";
$head .= "Content-Type: text/plain; charset=\"utf-8\"\n";
$head .= "Content-Transfer-Encoding: base64\n";
$zprava = base64_encode (autoUTF ($zprava));
return mail ($prijemce, $predmet, $zprava, $head);
}
...originál na http://diskuse.jakpsatweb.cz/?action=vthread&forum=9&topic=2111&page=-1#3
Ahoj,
já používám nastavení hlaviček, které popisuji podrobněji zde:
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
UTF-8 kódování — založil sigf07
Nefunkční kodovaní UTF-8 — založil Arbys
[DB] - chybné kódování - utf-8. — založil Lighter
Kódování utf-8 a windows-1250 — založil tom*p
Kodovani souboru - ansi, unicode, utf — založil mario
Moderátoři diskuze