Autor Zpráva
Nosnx
Profil
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
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
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
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
Nosnx:
Za řádek 25. přidej v požadovaném formátu něco jako
$dotaz .= 'Telefon: ' .  $telefon;
Nosnx
Profil
Super, funkční... díky Vám všem!!!

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: