IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: UTF-8 PHP maily

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
fuldos
Člen
Avatar
fuldos:15.5.2017 23:37

Zdravím, potřeboval bych pomoct, jak nastavit UTF-8 do tohoto scriptu.

<?php
$EmailTo = "[email protected]";
$Subject = "Nový email ze stránky ";
$errorMSG = "";
$name = $email = $phone = $message = null;

// NAME
if (empty($_POST["name"])) {
        $errorMSG = "Full name is required ";
} else {
        $name = $_POST["name"];
}

// EMAIL
if (empty($_POST["email"])) {
        $errorMSG .= "Email is required ";
} else {
        $email = $_POST["email"];
}

// PHONE
if (empty($_POST["phone"])) {
        $errorMSG .= "Phone is required ";
} else {
        $phone = $_POST["phone"];
}

// PHONE
if (empty($_POST["subject"])) {
        $errorMSG .= "Subject is required ";
} else {
        $Subject = $_POST["subject"];
}

// MESSAGE
if (empty($_POST["message"])) {
        $errorMSG .= "Message is required ";
} else {
        $message = $_POST["message"];
}

// prepare email body text
$Body .= "Celé jméno: ";
$Body .= $name;
$Body .= "\n";

$Body .= "Email: ";
$Body .= $email;
$Body .= "\n";

$Body .= "Telefon: ";
$Body .= $phone;
$Body .= "\n";

$Body .= "Zpráva: ";
$Body .= $message;
$Body .= "\n";

// send email
if($name && $email && $phone && $message){
        $success = mail($EmailTo, $Subject, $Body, "From:".$email);
}else{
        $success = false;
}

if ($success && $errorMSG == ""){
        echo "success";
}else{
        if($errorMSG == ""){
                echo "Něco se pokazilo :(";
        } else {
                echo $errorMSG;
        }
}
 
Odpovědět
15.5.2017 23:37
Avatar
Lava
Člen
Avatar
Lava:16.5.2017 7:41

Pridaj si tam dakde, niekde hore tento riadok:

$headers = "Content-Type: text/html; charset=UTF-8";
$headers .=  "From:".$email;

a funkciu mail uprav na

$success = mail($EmailTo, $Subject, $Body, $headers);
Nahoru Odpovědět
16.5.2017 7:41
Aspartám, sacharín, to je môj vitamín
Avatar
solta
Člen
Avatar
Odpovídá na fuldos
solta:25.5.2017 14:55

Php má pro práci s utf8 funkce zacínajíc mb_ pro tento priklad http://php.net/…end-mail.php

 
Nahoru Odpovědět
25.5.2017 14:55
Avatar
Jiří Fencl
Člen
Avatar
Jiří Fencl:25.5.2017 15:01

na subjekt pri pouziti funkce mail musis pouzit zvlas prevod nebo nepujdou ceske znaky :

$Subject= '=?utf-8?B?' . base64_encode($Subject) . '?=';
 
Nahoru Odpovědět
25.5.2017 15:01
Avatar
Petr Čech
Tvůrce
Avatar
Petr Čech:25.5.2017 15:08

Mám lepší řešení: vykašli se na omezenou funkci mail() a použij PHPmailer
Umí to snad všechno a nemusíš si vytvářet manuálně hlavičky a všechno tohle kolem.
Pro UTF-8 použiješ toto:

$mailer=new PHPMailer();
$mailer->CharSet="uft-8";

A voila, je po problémech.

Nahoru Odpovědět
25.5.2017 15:08
the cake is a lie
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.