Autor | Zpráva | ||
---|---|---|---|
Nosnx Profil |
#1 · Zasláno: 23. 4. 2012, 20:13:12
Zdravím, po dvoudením bádání, hledání na internetu a zkoušení naelezených variant to zkusím postnout sem, protože, tady jsem zatím vždy našel odpoveď. K problému...
Dělám na jedněch stránkách pro jednu firmu a potřebuji odesílat z formuláře dotaz na e-mail tech. podpory dané firmy. Všechno mi funguje, e-mail ale nefuguje diakritika... Když to testuju a pošlu si e-mail na gmail od Googlu, diakritika ok. Ale jakmile do proměné zadám email od centrumu nebo seznamu, e-mail dojde bez diakritiky.. :( :( Podle různých návodu a rad na internetu jsemscript upravoval ale s upravvou viz. níže se neodešle vůbec... Proto chci poprosi, jestli by se tady našla dobrá duše, a podívala se mi na script a poradil?a? Já už opravdu nevím, co může být špatně.. <?php include ("zahlavi.php"); $zprava = ""; if(strlen(ltrim ($_POST['jmeno']))>0){ $jmeno = $_POST['jmeno']; }else { $zprava .= "Nevyplnil(a) jste jméno a příjmení!<br>"; } if (strlen($_POST['email_odesilatel'])>0 && preg_match("/^[-0-9A-Z_\.]{1,50}@([-0-9A-Z_\.]+\.){1,50}([0-9A-Z]){2,4}$/i", $_POST['email_odesilatel'])){ $email_odesilatel=htmlspecialchars($_POST['email_odesilatel']); //osetreni proti presmerovani stranky (htmlspecialchars) }else{ $zprava.="Zadal(a) jste špatný e-mail <br />"; } if (strlen(ltrim($_POST['telefon']))>0) { $telefon = $_POST ['telefon']; } else { $zprava .= "Nevyplnil(a) jste Vaše telefonní číslo!<br>"; } if (strlen(ltrim($_POST['dotaz']))>0) { $dotaz = $_POST ['dotaz']; } else { $zprava .= "Nevyplnili(a) jste Váš dotaz!<br>"; } $email = "ich55@centrum.cz"; $subject = "Dotaz z webu RPS"; $kontakt = "Odeslal(a) pan(í): $jmeno ; Email: $email_odesilatel; Telefon: $telefon"; $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-Type: text/plain; charset=UTF-8\r\n"; $headers .= "Content-Transfer-Encoding: 8bit\r\n"; if ($zprava == "") { mail ($email,$subject,$dotaz,$kontakt,$headers); echo "Váš dotaz byl úspěšně zpracován a čeká na vyřízení! Děkujeme!"; } else { echo $zprava; } Prosím prosím... Pro upřesnění používám pspad a utf mám nastaveno!!! |
||
Davex Profil |
#2 · Zasláno: 23. 4. 2012, 22:13:05
Ve volání funkce
mail() máš o jeden parametr víc. Jako třetí parametr by měl být obsah zprávy a čtvrtý by měl obsahovat hlavičku.
|
||
Nosnx Profil |
Takže takto???
mail ($email, $subject, $dotaz, $headers, $kontakt); ???? |
||
candiess Profil |
#4 · Zasláno: 23. 4. 2012, 23:09:49 · Upravil/a: candiess
Nosnx:
$kontakt už tam vubec necpi.. dám ti zde mé funkční řešení emailu na aktivaci účtu, uprav si jej podle libosti: Třída s_mail function autoUTF($s) { if (preg_match('#[\x80-\x{1FF}\x{2000}-\x{3FFF}]#u', $s)) // detect UTF-8 { return $s; } elseif (preg_match('#[\x7F-\x9F\xBC]#', $s)) // detect WINDOWS-1250 { return iconv('WINDOWS-1250', 'UTF-8', $s); } else // assume ISO-8859-2 { return iconv('ISO-8859-2', 'UTF-8', $s); } } class s_mail { var $m_from = "my@email.cz"; var $m_to = "his@email.cz"; var $m_subject = "My Subject"; var $m_msg = "My msg"; var $m_title = "My title"; var $m_headers = ""; var $html_title = ""; function header() { //Message $m_msg = base64_encode(autoUTF($this->m_msg)); $this->m_msg = $m_msg; //Subject $subject = "=?utf-8?B?".base64_encode(autoUTF($this->m_subject))."?="; $this->m_subject = $subject; //Title $title = "=?utf-8?B?".base64_encode(autoUTF($this->m_title))."?="; $this->m_title = $title; $head = "MIME-Version: 1.0".PHP_EOL; $head .= "From: ".$this->m_title." <".$this->m_from.">".PHP_EOL; $head .= "Return-Path: ".$this->m_from."".PHP_EOL; $head .= "Content-Type: text/html; charset=\"utf-8\"".PHP_EOL; $head .= "Content-Transfer-Encoding: base64".PHP_EOL; $this->m_headers = $head; } function preview() { $this->header(); return htmlspecialchars("mail(".$this->m_to.",".$this->m_subject.",".$this->m_msg.",".$this->m_headers.");"); } function addAdress($c_email) { if($c_email) { $m_to .= ",".trim($c_email); } } function send() { $this->header(); $m = mail($this->m_to,$this->m_subject,$this->m_msg,$this->m_headers); if(!$m) { return false; } else { return true; } } function message($msg) { $this->html_title = $this->m_title; global $baseurl; $c = " <html> <head> <title>".$this->html_title."</title> </head> <body> <style> body { color: black; background: white; } </style> <div style='text-align: center'><img src='$baseurl/images/logo.png'/></div> <h3>".$this->html_title."</h3> <div> $msg </div> </body> </html> "; $this->m_msg = $c; } } Poslani emailu: $message = "Aktivační email...bla bla bla"; $mail = new s_mail(); $mail->m_from = "muj@email.cz"; $mail->m_to = "jeho@email.cz"; $mail->m_subject = "Titulek emailu"; $mail->m_title = "Nazev firmy"; $mail->message($message); $m = $mail->send(); ach, omlouvám se, nevšiml jsem si toho kodu, který si post v #1, zkus si něco vybrat z toho mého jestli chceš, ale základem je že tam už ta tvá $kontakt nepatří, f-ce mail má 4 parametry, přičemž poslední (headers) se celkem rozepisují ohledně češtiny a nějakých rozšířených f-cí :) |
||
abc Profil |
Nosnx:
Mělo by stačit upravit řádky 33, 34 na: $from = '=?UTF-8?B?' . base64_encode($jmeno) . '?= <' . $email_odesilatele . '>'; $headers = 'Return-Path: ' . $from . PHP_EOL; $headers .= 'From: ' . $from . PHP_EOL; $headers .= "MIME-Version: 1.0\r\n"; není to sice úplně 100% správně ($jmeno nemusí být vždy base64_encoded) $telefon potom budeš muset dát někam do zprávy
|
||
Nosnx Profil |
#6 · Zasláno: 23. 4. 2012, 23:56:52
Díky, díky, díky všem!! Už to funguje..nastal ale ještě jeden problém..jelikož mail() může mít jen 4 parametry, potřebuji do mejlu dosta kontakt, aby člověk, který dostal odpoveď, veděl, koho kontaktovat..
Pokud by někdo věděl, jak kod nejjednodušeji upravit, uvítal bych řešení... Ideální by bylo, se to "přiřetězilo ke zprávě, tedy $dotaz", ale jak?????????????? |
||
abc Profil |
#7 · Zasláno: 24. 4. 2012, 00:12:51
Nosnx:
Za řádek 25. přidej v požadovaném formátu něco jako $dotaz .= 'Telefon: ' . $telefon; |
||
Nosnx Profil |
#8 · Zasláno: 25. 4. 2012, 15:12:54
Super, funkční... díky Vám všem!!!
|
||
Časová prodleva: 12 let
|
0