Autor Zpráva
kaprCZ
Profil
Zdravím,

procházel jsem veškeré rady ve fóru i jinde na Googlu, ale pořád mi žádné řešení nějak nepomohlo.

Můj problém zní: Mám PHP kód pro zasílání mailů přes funkci Mail(). Kód funguje v pořádku a maily odesílá na gmail, seznam a i na můj osobní mail. Ovšem když jsem stejný kód použil na webu zákazníka, tak jeho mail zprávy nepřijímá. Správce sítě jsem se ptal a prý je vše povoleno, aby maily mohly normálně přicházet. Předpokládám tedy, že je nějaký problém v mém kódu, ale nevím si rady kde.

Máte nějaké nápady? Preferoval bych přímo zasílání přes funkci, o knihovnách typu PHPMailer vím, ale beru to jen jako krajní řešení, kdyby to už jinak nešlo.

Můj kód:
       $send = "<br>
          <img src='X.png' alt='logo' width='250px' height='69px'>
          <br>
              <br>
              <br>".$message."
              <br>
              <br><b> Jmeno a příjmení:</b> ".$name_surname."
              <br><b> E-mail odesílatele:</b> ".$email."
              <br><b> Telefon odesílatele:</b> ".$phone."
              <br><b> Firma:</b> ".$company."
              
              <br>Zákazníkovi odpovězte odesláním zprávy na e-mail, který zadal do formuláře.</b><br>
              <br>
              <br>";
            
              $headers  = "MIME-Version: 1.0" . "\r\n";   
              $headers .= "Content-type: text/html; charset=utf-8" . "\r\n";  
              $headers .= "To: Zákazník <neco@neco.cz>" . "\r\n"; 
              $headers .= "From: www.webzakaznika.cz <'.$email.'>" . "\r\n"; 
              $predmet = ' Zakaznikova firma - '.$name_surname.' ('.$email.')';      
     
        $odeslani_mailu = Mail("neco@neco.cz", $predmet, $send, $headers); 
Davex
Profil
Doména v adrese webu a v e-mailové adrese zákazníka se liší a web zákazníka a poštovní server jsou u různých hostingů? Přijde nějaká chyba na adresu odesílatele z konfigurace PHP (ini_get('sendmail_from');)?
kaprCZ
Profil
Davex:
Doména webu a e-mailu je stejná, web zákazníka a poštovní server jsou na stejném hostingu, na adresu odesílatele nic nepřišlo.
TomášK
Profil
Příčina je napsaná v logu mailserveru, zkus se se správcem domluvit, poslat testovací mail a nakouknout do logu. Můj tip je, že daný mailserver odmítne adresu uvedenou ve 'From:'.
kaprCZ
Profil
Ok díky za tip, zjistím. :)
Enko
Profil
Zkontruluj ještě jestli to neblokuje SPF. Dále zkus přidat do funkce mail() parametr -f, na který se pošle odpověď mailserveru v případě, že nastane nějaká chyba. Viz níže.
define("ERROR_REPLY","mailbox@nejakadomena.com"); // na tento mailbox ti prijde  chybova zprava z mailserveru, v pripade, ze nejaka bude
mail($to, $predmet, $zprava, $head, "-f " . ERROR_REPLY);
kaprCZ
Profil
Enko:
Děkuji za odpověď, žádná chybová zpráva mi ale nepřišla, takže asi tam chyba nebude.

TomášK:
Zeptám se správce a uvidíme, jinou možnost tu už asi nevidím.
kaprCZ
Profil
Ok, problém vyřešen. Poté co jsem k funkci přidal "-f " . ERROR_REPLY); to začalo najednou fungovat. Děkuji všem za rady.

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: