Autor Zpráva
janky
Profil
Dobrý den, nevíte proč mi nepřijde email ? Podmínka vyhodnotí odeslání úspěšně.
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=('Email nejde odeslat.');  
        }

        
        
        
    }
    else 
        $out = 'Formulář není správně vyplněný!';
    
}
Enko
Profil
Díval jsi se do spamu nebo do všech složek v mailboxu? Zkoušel jsi se dívat do logů na mailserveru pokud můžeš? Nemáš zapnutou/špatně nastavenou SPF? Zkoušel jsi přidat do funkce mail() pátý parametr na navrácení chybové zprávy z mailserveru? Tuším že to je parametr -f.
janky
Profil
Psal jsem ještě na podporu hostingu, tam my bylo odpovězeno tak:
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.

TPak mi tam poradili používat PHPmailer. Ten sem si tedy stáhnul a vložil na web ale stejně se po kliknutí na submit email neodešle...

require "class.phpmailer.php";
    
        $prijemce = 'michal.jankovec@seznam.cz';
    
      $mail = new PHPMailer();
      $mail->From = $_POST['email'];   // adresa odesílatele skriptu
      $mail->FromName = "Mailer Test"; // jméno odesílatele skriptu (zobrazí se vedle adresy odesílatele)
     
      $mail->AddAddress($prijemce);  // přidáme příjemce
      
      $mail->SetLanguage("cz");
      
      $mail->Subject = 'Předmět emailu';    // nastavíme předmět e-mailu
      $mail->Body = $_POST['zprava'];
      $mail->WordWrap = 50;   // je vhodné taky nastavit zalomení (po 50 znacích)
      $mail->CharSet = "utf-8";   // nastavíme kódování, ve kterém odesíláme e-mail
      
      $mail->AddAttachment($_FILES['priloha']['tmp_name'], $_FILES['priloha']['name']);
     
      if(!$mail->Send()) {  // odešleme e-mail
         $output= 'Došlo k chybě při odeslání e-mailu.';
         $output= 'Chybová hláška: ' . $mail->ErrorInfo;
      }
      else
      {
         $output= 'E-mail byl v pořádku odeslán.';
      }
     
     $output ='
     <form method="POST">'._xsrfProtect().'
     <ul class="form-style-1">
         <li>
            <label>Váš email<input type="text" name="email" class="field-long"/></label>
        </li>
        <li>
            <label>Vaše zpráva <span class="required">*</span></label>
            <textarea name="zprava" id="field5" class="field-long field-textarea"></textarea>
        </li>
        <li>
            <label>Soubor <input type="file" name="priloha" /></label>
        </li>
        <li>
            <input type="submit" value="Odeslat email" class="field-divided"/>
        </li>
     </ul>
     </form>';
Enko
Profil
Zkus to poslat na nějakou jinou emailovou adresu. Založ si například dočasný mailbox, pokud nemáš jinde než na seznamu a také změň hodnotu $_POST['email'] na jinou než na doméně seznam.cz
janky
Profil
Ještě sem zapoměl napsat že mi to nevypíše žádnou zprávu ta podmínka ... ani chyba ani že byl odeslán...
Enko
Profil
Zapni si výpis chyb. Nic se ti nevypíše, protože tu proměnou $output přepíšeš zobrazením formuláře. Pojmenuj si jí nějak jinak.
Davex
Profil
janky:
musíte odosielanie vykonať pomocou SMTP prihlásenia na email server seznamu za pomoci vašeho mena a hesla
Poradili ti odesílat pomocí SMTP a ty nepoužíváš SMTP.

Chybí tam něco takového:
$mail->isSMTP();
$mail->Host = "smtp.seznam.cz";
$mail->Port = 25;
$mail->SMTPAuth = true;
$mail->Username = "michal.jankovec@seznam.cz";
$mail->Password = "heslodoseznamu";

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: