Dobrý den,
jelikož mi už dochází nápady, rád bych si poslechl nápady ostatních, kde by mohl být zakopán pes. Situace se má asi takto. V části skriptu odesílám dosti důležitý email a je pro mě důležité alespoň vědět, že pokud se neodeslal, tak, že se neodeslal. Z tohoto důvodu zapisuji podle return value funkce mail() do textového souboru výsledek. Co je na celé situaci velmi zákeřné je, že v 98 případech ze 100 se mail odešle a ano záznam = success tam opravdu je, ALE občas se stane, že skript tvrdí, že mail odešel, tj. zapíše se success, ale mail prokazatelně nedorazí. Představuji si, že server odešle mail a řekne skriptu, že všechno je ok, a server později zjistí, že je blbě mailovka nebo něco a mail je nedoručitelný, ale to už nezjistím.
Ač je to v tomto případě takřka zbytečné, když tato část funguje, ale zde je ukázka kódu, která posílá mail (tj. mechanismus popsaný výše):
-------------------------------------------------
$result = mail($email,"Subject",$msg,"From: Sender <sender@domain.com>\r\nReply-To:Sender <sender@domain.com>\r\nMIME-Version: 1.0\r\nContent-Type: text/html; charset=utf-8\r\n");
if($result) {
$log_record = '---- : (cs) '.date("Y-m-d H:i:s").' to '.htmlspecialchars($email).'=success'.PHP_EOL;
} else {
$log_record = ' : (cs) '.date("Y-m-d H:i:s").' to '.htmlspecialchars($email).'=FAILURE'.PHP_EOL;
}
fwrite($f, $log_record); // zapis do logu
-------------------------------------------------
Předem děkuji za jakoukoliv radu nebo vysvětlení co se tam přesně děje, neboť do tohoto osobně moc nevidím, a proto mám problém lokalizovat problém.
PS: 2 věci:
1) jsem si vědom limitu 10 mailů/hod (pokud to nezmělily v posledních letech), ale pak by stejně měla mail() vrace false a to by pak nebyl tento problém
2) nepadá to do spamu, maily opravdu nejsou
Dobrý den, odesílání přes php funkci mail() lze používat, ale nikdo vám negarantuje 100% doručování. Vše záleží od XY nastavení. Pokud použijete email odesilatele na nějaké doméně která dle SPF nepovoluje naše servery a DMARC přidáva další pravidla, server příjemce email zahodí a nedostane se ani do spam složky.
PHP funkce mail vám bude pokaždé tvrdit že email odeslala (pokud příkaz neobsahuje chybu), protože se tak stalo, z webhostingového serveru email odejde. Následně ale prochází kontrolou množství odeslaných email na předřazené proxy a nemusí být puštěn dál do internetu.
Osobně pro odesílání emailů doporučuji odesílání vykonávat pomoci SMTP například vaši email schránky.