Gecikme (bir röle olarak sendmail kullanarak) Exchange üzerinden e-posta göndermek için PHP mail () fonksiyonu kullanarak

4 Cevap php

Ben bir Linux sunucu e-postalar göndermek için PHP mail () fonksiyonu kullanılarak, ama ana MTA olarak, Exchange kullanıyorum. Ulaşmak için bu sendmail sonra e-posta gönderir yerel Exchange sunucusuna, her şeyi röle kurulmuştur.

Bu düzgün çalışıyor, ancak PHP komut dosyası bitirmeden önce zaman aşımı sınırına kadar beklemek gibi görünüyor. Ben belki bu sadece bir röle var olur, sendmail bir yanıt gelmiyor hangi bekliyor düşündüm?

Ben ayrı bir süreçte e-postaları kapalı yangın ve daha sonra hemen geri dönmek için anlamı, "arka plan" teslim modu ile sendmail başlamalıdır "sendmail_path"-odb için php.ini komut satırı seçeneği, belirtilen. Ama yine de sonuna kadar PHP script için 30 saniye sürer.

Anyone have any ideas? I'm a bit stumped. Thanks.

4 Cevap

Php / posta günlükleri bakmadan pek söyleyemeyiz. Ama neden doğrudan seçtiğiniz MTA PHP göndermek değil mi? sadece PHPMailer gibi bir kütüphane kullanımı ve kimlik doğrulama kolay olacaktır.

Ayrıca hata ayıklama amaçları için size (bir paket yöneticisi 3 saniye sürer ile linux üzerinde) postfix yükleyebilir ve röle gibi kurmak, Postfix günlükleri ayrıntılı modda oldukça kapsamlıdır ve sendmail darboğaz olsaydı keşfetmek olabilir.

Herhangi bir yardım varsa benim sendmail_path bu gibi görünüyor:

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

Dolaylı bir çözüm.

Yapmamız kullanıcı dışarı çıkmak için e-posta için beklemek zorunda değildir bu yüzden arka planda e-postalar göndermek için PHP'nin sistemini () kullanmaktır.

Bu gibi bir şey ...

<? //sendEmail.php
mail(argv[1], argv[2], argv[3]);
?>



//your sciprt
<?
...
system("php sendEmail.php to@address.com 'subject' 'message' 1>/dev/null 2>&1 &");
...

Bir alternatif ARMUT en Mail kullanmak olabilir. Ben qmail ve Exchange SMTP sunucuları e-postalar göndermek için kullanmıştır.