2013-02-14 33 views
7

Bu aptalca bir soru olabilir, ancak php mail işlevinin neden çalışmadığını bulamıyorum Debian sıkıştırmasında bir nginx sunucum var. son günlerde. Basit posta uygulamasını denedim ama yanlış döndü.mail() yeni sunucuda çalışmadı

if(mail('[email protected]', 'test-subject', 'test-text-blablabla')) 
    echo 'ok'; 
else 
    echo 'bad'; 

Bununla neler yapabilirim?

Teşekkürler. php.ini

benim posta bölümü:

[mail function] 
; For Win32 only. 
; http://php.net/smtp 
SMTP = localhost 
; http://php.net/smtp-port 
smtp_port = 25 

; For Win32 only. 
; http://php.net/sendmail-from 
;sendmail_from = [email protected] 

; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). 
; http://php.net/sendmail-path 
;sendmail_path = 

; Force the addition of the specified parameters to be passed as extra parameters 
; to the sendmail binary. These parameters will always replace the value of 
; the 5th parameter to mail(), even in safe mode. 
;mail.force_extra_parameters = 

; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename 
mail.add_x_header = On 

; The path to a log file that will log all mail() calls. Log entries include 
; the full path of the script, line number, To address and headers. 
;mail.log = 
+6

Hata günlüğünü kontrol ettiniz mi? – zerkms

+1

Komut satırı e-postası gönderebilir misiniz? –

+0

@Dagon nasıl yapabilirim? –

cevap

23

Tamam, ben yaptım. Ben nginx sunucu ile debian sıkmak için yaptım nasıl: (tüm komutlar ı kök kullanıcıdan yürütme) Her şeyden

Önce

apt-get install sendmail 

sonraki sendmail'i yüklemeniz gerekir, sen daha kolaydı bu dosyayı yapılandırmanız gerekir Ben

düşünce
sendmailconfig 
bir php.ini oldu yapmak

tamam, bir sonraki adım (ı acemiyim, büyük bir yönetici değilim, bu yüzden gerekli olup olmadığını bilmiyorum.)

Bu andan itibaren, teorik olarak, e-postayı göndermek,

sendmail_path= /usr/sbin/sendmail -t -i 

Tamam

ayarlanır, ancak benim durumumda için 504 http hata geçidi zaman aşımı yol açtı. Ancak daha sonra bulduğum gibi, e-posta zaten e-posta kutusuna geldi. Yani, benim test php dosyasıdır:

<?php 
    mail('[email protected]', 'test', 'you done that'); 
    echo 'ok'; // I use this to check that script is end the execution 
?> 

çok açık bu.

Sonraki sorun 504 hatası. Ben bu hatayı bulmak

nano /var/log/mail.log 

ve burada günlük dosyalarına gidin (yani sadece bir hata, ancak bir 504 hata sorumludur):

Sonra
sm-msp-queue[***]: My unqualified host name (myhostname) unknown; sleeping for retry 

, nasıl bulmak için ben Bu sorunu çözebilir: http://forums.fedoraforum.org/archive/index.php/t-85365.html Bu sayfadaki son yorumunuz.

Veya bu yapılan başka kelimeler:

nano /etc/hosts 

ve bu dosyada

Yaptığım

127.0.0.1 my_ip localhost myhostname 

kurtarmak ana, sırasını değiştirmek. test php dosyanızı açın, herhangi bir 504 hatası yoktur ve e-postalar posta fonksiyonunda bahsettiğiniz e-posta geliridir. Dediğim gibi, ben bir acemiyim ve bu sizin için işe yaramayabilir, ama yine de benim için çalışır. Bu, son yapılandırma değil elbette. Umarım faydalı bulursun.

+0

Eğer bu konuda çok iyi bilen birisi varsa, çok minnettar olacağım Burada biraz tavsiye ekleyebilirsiniz. –

+3

"apt-get install sendmail-bin" ve daha sonra "apt-get install sendmail" komutunu çalıştırmam gerekiyordu. Daha sonra bir e-posta göndermeye çalıştı ve çalıştı. Php.ini'de değişiklik yapılamadım. –

+0

@AlminoMelo biraz gecikmeli yanıt, ancak bu php.ini değişikliklerinin posta hizmetlerinin spam filtrelerini iyi bir şekilde etkileyebileceğini düşünüyorum. (Emin değil). Bazen e-postalarımın spam klasörüne geldiğini ve bunun kusursuz e-posta yapılandırması ve DNS e-posta ayarları sorunlarından kaynaklandığını biliyorum. –