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 |
#2 · Zasláno: 7. 2. 2015, 14:34:50
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 |
#3 · Zasláno: 7. 2. 2015, 14:37:51
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 |
#7 · Zasláno: 7. 2. 2015, 16:57:40
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 |
#8 · Zasláno: 7. 2. 2015, 17:33:20
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 |
#10 · Zasláno: 7. 2. 2015, 18:11:47
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 |
#11 · Zasláno: 7. 2. 2015, 18:41:27
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 |
#12 · Zasláno: 8. 2. 2015, 20:36:27
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 |
||
Časová prodleva: 9 let
|
0