Autor Zpráva
Daidalos
Profil
Ahoj všichni, zrovna řeším menší problém. Dělám si web na maturitku a mám tu problém s funkcí mail(). Ta maily odesílá, třeba na seznam příjdou hned s jakýmkoliv nastavením, ale na atlas vůbec a gmail je hned hází do spamu, což je velice nežádoucí.
      $headers  = 'MIME-Version: 1.0' . "\r\n";
      $headers .= 'X-Mailer: PHP/' . phpversion(). "\r\n";
      $headers .= 'Content-type: text/plain; charset=utf-8' . "\r\n";
      $headers .= "Reply-To: soc.rajchert.cz <roman@rajchert.cz>\r\n";
      $headers .= "Return-Path: soc.rajchert.cz <roman@rajchert.cz>\r\n"; 
      $headers .= "From:  soc.rajchert.cz <w18034@wedos.net>" . "\r\n";
      if(mail($email, popis("tema","hesla.php"), $obsah, $headers)){ 
Ve spoustě diskuzí jsem si přečetl, že by měli být nastavené různé headers, aby to gmail neházel do spamu, ale nic nepomohlo a nevím co s tím.. Pokuď není třeba hlavička FROM nastavena, email příjde z adresy w18034@wedos.net (což je můj hostingový účet na wedosu), ale stejně spam a na atlas vůbec.. nějaké typy, rady?
Alphard
Profil
Na gmail je to dost magie, vzlášť html maily podle mých zkušeností. Záleží na detailech kódu, počtu odkazů a nevím co ještě. Vy jste na sdíleném serveru wedosu předpokládám, jestli se dostal kvůli někomu jinému na černou listinu, asi s tím nic neuděláte.

Možná zkusit odeslat mail přes PHPMailer nebo Nette\Mail, udělají to trochu jinak, s jinými hlavičkami, uvidíte.
preston
Profil
Zdravím Vás .... Mám podobný problém, pri odoslaní mailu pomocou mail formuláru Mail vôbec nepríde.
Mail formulár má 4 polia: Meno, Email, Telefon a Text správy. - zistil som že maily neprechádzajú vtedy ak sa vyplní mail adresa, kde problém robí samotný znak "@" Pokiaľ sa nezadá zavináč tak mail prejde, v gmailu síce do spamu. Akonáhle sa zavináč do pola Email zadá, mail neprejde!
Vie mi niekto poradiť v čom môže byť problém, nakoľko mailový kontakt je pri komunikácii potrebný a nechcem toto pole vynechať.
html:
<form id="form" action="send.php" method="post" enctype="multipart/form-data">
                      <fieldset>
                         <label><input name="p1" type="text" value="Meno" onBlur="if(this.value=='') this.value='Meno'" onFocus="if(this.value =='Meno' ) this.value=''"></label>
                         <label><input name="p2" type="text" value="E-mail" onBlur="if(this.value=='') this.value='E-mail'" onFocus="if(this.value =='E-mail' ) this.value=''"></label>
                         <label><input name="p3" type="text" value="Telefón" onBlur="if(this.value=='') this.value='Telefón'" onFocus="if(this.value =='Telefón' ) this.value=''"></label>
                        <label><textarea name="text" onBlur="if(this.value==''){this.value='Vaša správa'}" onFocus="if(this.value=='Vaša správa'){this.value=''}">Vaša správa</textarea></label>

send.php:
<?php

  //Some variables
  $mymail = "xxx@xxx.sk";
  $ename = $_POST['p1'];
  $eemail = $_POST['p2'];
  $etelefon = $_POST['p3'];
  $emessage = $_POST['text'];
  
  $headers .= 'Content-type: text/plain; charset=utf-8' . "\r\n";
  $headers .= "From: $eemail" . "\r\n";
  
  $body = "$emessage\n\nMeno: $ename\nE-mail: $eemail\nTelefon: $etelefon\nTáto správa bola odoslaná zo stránky www.xxxxx.sk";
  mail($mymail,"Vaša správa",$body, $headers);
  header('Location:http:/kontakt.html');
  ini_set("SMTP",$server); 
?>

Vďaka za rady :)
IdemeNaHavaj
Profil
http://www.transio.com/content/how-pass-spam-filters-php-mail
Enko
Profil *
To co píše IdemeNaHavaj je i z mé zkušenosti nejlepší řešení. Hlavička FROM musí být stejná se skutečným jménem mailserveru, jinak to vyhodnocují spamfiltry na jednotlivých službách (zcela oprávněně) jako podvodnou nedůvěryhodnou zprávu.
Daidalos
Profil
Díky všem, ona to je opravdu dost magie zprovoznit mail() aby se dal používat, asi je lepší používat nějakej framework na maily, ale wedos má zas zakázaný spojení s externím smtp. Tyhle návody jako dával IdemeNahavaj jsem si četl, ale nikdy se mi nepodařilo hlavičky správně nastavit, ještě si s tím pohraju, ale všem díky.
Davex
Profil
Daidalos:
1) Hlavičku Return-Path je zbytečné nastavovat, protože jí mailserver přepíše.
2) Místo znaků "\r\n" pro konec řádku v hlavičce je spolehlivější používat konstantu PHP_EOL.
3) Často stačí jen správně nastavit skutečného odesílatele v pátém parametru funkce mail().

$from_name = "soc.rajchert.cz";
$from_email = "roman@rajchert.cz";

$headers = 'MIME-Version: 1.0' . PHP_EOL;
$headers .= 'X-Mailer: PHP/' . phpversion() . PHP_EOL;
$headers .= 'Content-Type: text/plain; charset=utf-8' . PHP_EOL;
$headers .= "Reply-To: $from_name <$from_email>" . PHP_EOL;
$headers .= "From: $from_name <$from_email>" . PHP_EOL;

if (mail($email, popis("tema","hesla.php"), $obsah, $headers, "-f $from_email")){ 

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: