Autor Zpráva
Akali
Profil
Zdravím, následujícím scriptem se snažím odeslat mail na google mail

<?php
        If($_POST['odeslano'] And $_COOKIE["cookie"] == md5(md5($_POST["kontrola"])."tajná sůl") And !Empty($_POST['jmeno']) And !Empty($_POST['email']) And $_POST['email']!="@" And !Empty($_POST['zprava'])){    
    $jmeno = $_POST['jmeno'];
    $email = "test@test.cz";
    $telefon = $_POST['telefon'];
    $zprava = "Zpráva z webu ski".$_POST['zprava']."";
    $zprava .= "\r Jméno:".$jmeno;
    $zprava .= "\r Telefon:".$telefon;
    // předmět s diakritikou                                  
    $clearsubject = "ski";
    $encodedsubject = base64_encode ($clearsubject);
    $predmet = "=?utf-8?B?$encodedsubject?="; 
    //nastavení mailu 
  $headers = "MIME-Version: 1.0".PHP_EOL;
  $headers .= "Content-Type: text/html; charset=UTF-8".PHP_EOL;
  $headers .= "Content-Transfer-Encoding: base64".PHP_EOL;
  $headers .= "From: $email";
  
    If(mail("kittlerpeta@centrum.cz", $predmet, $zprava, $headers)){
      echo "<div id=\"napiste_nam_spodni\"><span style=\"vertical-align: top\"><code>E-mail byl úspěšně odeslán.</div>";

     }       else echo "E-mail se <strong>nepodařilo poslat</strong> možná kvůli nevyplnění všech údajů nebo kontrolní otázky.";
   }
  else if($_POST['odeslano']) echo "<div style=\"padding-left: 100px;\">Váš e-mail nebyl odeslán.<br> Vyplňte všechna políčka a zkontrolujte antispamovou kontrolu</div>";
  
?>       

Jenže na gmail nedorazí, ale když si ho nechám zaslat na centrum tak dorazí. Proč ho gmail blokuje? => email není ani ve spamu, ani v koši - nikde
Díky moc :-)
smitka
Profil
Zkus mail poslat na http://www.mail-tester.com/, ukáže ti hlavní důvody, proč by mohl být mail zahozen.

Na odesílání bych také použil https://github.com/PHPMailer/PHPMailer, který do mailu správně dodá potřebné hlavičky.
Akali
Profil
Výsledek odeslání na mail-tester je tady
http://www.mail-tester.com/web-bkzEQh
Radek9
Profil
Akali:
S odesíláním na Gmail jsem měl jednu dobu taky problém. Pomohlo vyplnit i pátý parametr (additional_parameters) hodnotou "-f " . $email.
Akali
Profil
Pochopil jsem to takto správně?
If(mail("petrkittler1@gmail.com", $predmet, $zprava, $headers, "-f " . $email)){
smitka
Profil
Tak podle mailtesteru je hlavní problém to, že je tvůj poskytovatel na blacklistech (těch nejpoužívanějších) a je dále špatně nastaven SPF záznam.

Je to potřeba řešit s poskytovatelem, jinak z těchto serverů prostě mail spolehlivě nepošleš.

Pomocí PHP mailer můžeš k odesílání použít i svůj gmail, jen odchozí adresa bude vždy tvoje - http://www.web-development-blog.com/archives/send-e-mail-messages-via-smtp-with-phpmailer-and-gmail/.

Pokud jsi náhodou student, tak bys mohl využít také SendGrid, který je v Github Packu pro studenty - https://education.github.com/pack.

Ještě koukám, že není ani vyplněn reverzní záznam pro server. Poskytovatel to má opravdu lajdácky nastavené a má opravdu co dohánět.
Davex
Profil
Akali:
Pochopil jsem to takto správně?
Ano.

V hlavičce udáváš kódování Content-Transfer-Encoding: base64, ale zpráva do něj není zakódovaná.

smitka:
Tak podle mailtesteru je hlavní problém to, že je tvůj poskytovatel na blacklistech (těch nejpoužívanějších)
Ano, ale u Gmailu to nemusí až tak úplně vadit, protože GMail používá svůj vlastní blacklist a není známo, zda nějak používá i ty veřejné.

je dále špatně nastaven SPF záznam
Není nastaven vůbec, takže není špatně.

není ani vyplněn reverzní záznam pro server
Reverzní záznam pro IP adresu nastaven je.
smitka
Profil
Davex:

Ok, jen sem rychle projel výsledek mailtesteru, kde byly stržené body. To že není nastaven SPF záznam sice není vyloženě chyba, ale správně to také není (dle hlášky v mailtesteru jsem chybně myslel, že je nastaven úplně špatně).

Reverzní záznam sice nastaven je, ale na adresu surikata.stable.cz a ne na srv9.endora.cz, jako který se server hlásí.

Každopádně být na baracudě, sorbsu a spamhausu je velký problém. Stále trvám na tom, že ze serverů v tomto stavu nelze aktuálně seriózně emaily odesílat.
Davex
Profil
smitka:
Reverzní záznam sice nastaven je, ale na adresu surikata.stable.cz a ne na srv9.endora.cz, jako který se server hlásí.
Je to celkem běžné a většinou se kontroluje pouze to, zda doménové jméno získané reverzním dotazem odpovídá stejné IP adrese. V mnoha případech ani nejde kontrolovat shodu hostname, protože server může mít víc IP adres.

To že není nastaven SPF záznam sice není vyloženě chyba, ale správně to také není
Proč to není správně? Spousta poštovních systémů ani SPF záznamy nepoužívá. Možná je to jen best practice mít nastavené SPF záznamy.
smitka
Profil
Davex:
I když má server více IP adres, tak přeci mohu nastavit PTR pro každou z nich na to, pod čím se používaný poštovní server hlásí ostatním. Pokud nenastavím SPF, je to další zhoršení spam skóre (potažmo jeho nesnížení). Obě metody pomáhají snížení spam skóre, tak nevidím důvod proč je nevyužít. Když dělám mailserver, tak chci využít co nejvíce možností, abych zajistil doručení co největšího procenta zpráv - SPF, správné PTR, DKIM a antispam i pro odchozí poštu.

Blacklisty jsou každopádně tím hlavním problémem.
Davex
Profil
smitka:
I když má server více IP adres, tak přeci mohu nastavit PTR pro každou z nich na to, pod čím se používaný poštovní server hlásí ostatním.
To sice můžeš, ale pak bys měl mít pro stejné jméno A záznamy se všemi IP adresami, což nemusí být žádoucí (např. pokud máš připojení k několika ISP a některé zrovna neběží).

Nicméně na tom v praxi nezáleží, protože mailservery neporovnávají hostname z EHLO se jménem získaným reverzním dotazem, takže je to zbytečné nastavovat.
Akali
Profil
Moc těm vašem názvům a celkově ani té debatě nerozumím :-D
Nicméně odeslat mail z endory na gmail pomocí funkce php mail() nejde.. Hrůůůza

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:

0