#1 2017-04-20 18:15:15

janky
Endora uživatel
Registrován: 2013-09-22
Příspěvky: 9

Email se neodešle.

Dobrý den, tento script neodešle email, i když podle podmínky byl email odeslán.

Zde je kód:
$from_email = "michal.jankovec@seznam.cz";
$reply_to_email = "michal.jankovec@seznam.cz";


if ($_POST){
   
    if (isset($_POST['priloha'])) { //Práce z přílohou pokud se příloha odeslala
       
        $file_tmp_name    = $_FILES['priloha']['tmp_name'];
        $file_name        = $_FILES['priloha']['name'];
        $file_size        = $_FILES['priloha']['size'];
        $file_type        = $_FILES['priloha']['type'];
        $file_error       = $_FILES['priloha']['error'];
        
        $handle = fopen($file_tmp_name, "r");
        $content = fread($handle, $file_size);
        fclose($handle);
        $encoded_content = chunk_split(base64_encode($content));
           
    }
   
    if (isset($_POST['zprava']) && $_POST['zprava']) {
       
        $message        = filter_var($_POST["zprava"], FILTER_SANITIZE_STRING);
       
        $boundary = md5("sanwebe");
       
        $headers = "MIME-Version: 1.0\r\n";
        $headers .= "From:".$from_email."\r\n";
        $headers .= "Reply-To: ".$reply_to_email."" . "\r\n";
        $headers .= "Content-Type: multipart/mixed; boundary = $boundary\r\n\r\n";
       
        $body = "--$boundary\r\n";
        $body .= "Content-Type: text/plain; charset=ISO-8859-1\r\n";
        $body .= "Content-Transfer-Encoding: base64\r\n\r\n";
        $body .= chunk_split(base64_encode($message));
       
        $body .= "--$boundary\r\n";
        $body .="Content-Type: $file_type; name=".$file_name."\r\n";
        $body .="Content-Disposition: attachment; filename=".$file_name."\r\n";
        $body .="Content-Transfer-Encoding: base64\r\n";
        $body .="X-Attachment-Id: ".rand(1000,99999)."\r\n\r\n";
        $body .= $encoded_content;
       
        $sentMail = mail($recipient_email, $subject, $body, $headers);
       
        if($sentMail) //output success or failure messages
        {       
            $out=('Díky za váš email');
            
        }else{
            
            $out=('Nelze odeslat email!.'); 
        }

       
       
       
    }
    else
        $out = 'Formulář není správně vyplněný!';
   
}

Kde je prosím chyba ?

Offline

#2 2017-04-20 18:54:30

pm4481
Člen
Registrován: 2014-02-25
Příspěvky: 18

Re: Email se neodešle.

ahoj, určitě na konci ti chybí { závorka

  else
       zde=>{ $out = 'Formulář není správně vyplněný!';
   
}

if (isset($_POST['zprava']) && $_POST['zprava'])  toto podle mě nedává smysl, nechal bych jen if (isset($_POST['zprava'])){...}

$out=('Díky za váš email'); a tímto zápisem si moc nejsem jistý - u obou zpráv bych dal $out="Díky za váš email";

Snad to pomůže:)

Offline

#3 2017-04-20 18:56:09

JF
Endora rádce
Místo: ....nice u Plzně
Registrován: 2010-06-22
Příspěvky: 11,939

Re: Email se neodešle.

Seznam má blokované odosielanie z ich email adries mimo ich mail servery pomocou SPF. Tj náš server nemôže odoslať mail z adresy končiacou na @seznam.cz
Ak tohoto chcete docieliť, musíte odosielanie vykonať pomocou SMTP prihlásenia na email server seznamu za pomoci vašeho mena a hesla.


Ján Fačkovec - Endora.cz by Webglobe
Email, Web, Webadmin, Webmail, Nápověda, Ceník

Offline

#4 2017-04-20 21:49:24

janky
Endora uživatel
Registrován: 2013-09-22
Příspěvky: 9

Re: Email se neodešle.

Ale tento kód mi na seznam email přijde.

if ($_POST) // V poli _POST něco je, odeslal se formulář
    {
        if (isset($_POST['jmeno']) && $_POST['jmeno'] &&
            isset($_POST['prijmeni']) && $_POST['prijmeni'] &&
            isset($_POST['email']) && $_POST['email'] &&
            isset($_POST['tel']) && $_POST['tel'] &&
            isset($_POST['predmet']) && $_POST['predmet'] &&
            isset($_POST['zprava']) && $_POST['zprava'] &&
            isset($_POST['rok']) && $_POST['rok'] == date('Y'))
        {
            $hlavicka = 'From:' . $_POST['email'];
            $hlavicka .= "\nMIME-Version: 1.0\n";
            $hlavicka .= "Content-Type: text/html; charset=\"utf-8\"\n";
            $adresa = 'michal.jankovec@seznam.cz';
            $predmet = 'Poptávka z webu - '.$_POST['predmet'];
            $zprava = '<span style="font-weight:bold">Jméno: '.$_POST['jmeno'].' '.$_POST['prijmeni'].' <br> Telefon: '.$_POST['tel'].'</span><br><hr>'.$_POST['zprava'];
            $uspech = mb_send_mail($adresa, $predmet, $zprava, $hlavicka);
            if ($uspech)
            {
                $out = '<div class="emailOK">Email byl úspěšně odeslán, brzy vám odpovíme.</div>';
            }
            else
                $out = '<div class="emailError">Email se nepodařilo odeslat. Zkontrolujte adresu.</div>';
        }
        else
            $out = '<div class="emailError">Formulář není správně vyplněný!</div>';
    }

Tak mam špatně napsaný ten první script ?

Offline

#5 2017-04-21 08:04:58

JF
Endora rádce
Místo: ....nice u Plzně
Registrován: 2010-06-22
Příspěvky: 11,939

Re: Email se neodešle.

Odporúčam použiť PHPmailer http://phpmailer.worxware.com/index.php?pg=exampleamail ktorý osobne používam na odosielanie emailov prostredníctvom SMTP Gmailu.


Ján Fačkovec - Endora.cz by Webglobe
Email, Web, Webadmin, Webmail, Nápověda, Ceník

Offline

Zápatí

Založeno na FluxBB | CZ a SK