«Hiç posta gelmiyor» ifadesinin birbirinden çok farklı iki sebebi vardır: ya sunucu onu hiç göndermemiştir ya da göndermiş ve alıcı reddetmiştir. Posta kaydı bunu tek satırda yanıtlar, gerisi de o yanıttan doğar.
tail -50 /var/log/mail.log
- status=sent — çıkmış. Sorun teslimde, göndermede değil: postanın istenmeyene düşmesiyle ilgili yazıya bakın.
- status=bounced — alıcı reddetmiş ve satır sebebini söylüyor.
- Hiçbir şey yok — uygulama hiçbir şeyi teslim etmemiş.
Kayda hiçbir şey ulaşmıyorsa
PHP'nin mail() işlevi, yerel posta programı iletiyi KABUL ettiğinde true döndürür; bu, onu göndermekle aynı şey değildir. Kurulu bir posta programı yoksa false döndürür ve uygulamaların çoğu bunu görmezden gelir.
php -r 'var_dump(mail("you@example.com","test","body"));'
which sendmail
mail() yerine SMTP kullanın
Kendi posta kutunuza kimliği doğrulanmış SMTP daha güvenilirdir ve çok daha iyi teslim edilir: ileti imzalıdır ve bir web sürecinden değil, itibarı olan bir sunucudan gelir.
Host: mail.yourdomain.com
Port: 465 (SSL) or 587 (TLS)
User: the full address
From: the SAME address
Formu değil, yolu sınayın
swaks --to you@example.com --from noreply@yourdomain.com --server mail.yourdomain.com:587 -tls -au noreply@yourdomain.com
Bu, SMTP'yi doğrudan sınar ve konuşmanın tamamını yazdırır. Çalışıyor ama site yine de beceremiyorsa, kusur posta sunucusunda değil uygulamanın ayarlarındadır.
mailq. Kuyrukta takılı bir ileti kabul edilmiş ama henüz teslim edilmemiştir ve kuyruk, beklemesinin sebebini adıyla söyler.
