PHP, LAMPP ve PostFix ile posta gönderme


9

2 gündür çalışıyorum ve çalışacak en basit şeyi alamıyorum.

Sorun: PHP'den e-posta adresime e-posta göndermek çalışmıyor

Daha önce Windows ve Sendmail (Sendmail XAMPP paketindeydi) ile çalışıyordum ve her şey yolundaydı. Linux için XAMPP paketi (1.7.7) Sendmail'i entegre etmedi. Bu yüzden biraz dolaştıktan sonra Postfix'in bir LAMPP ortamına daha iyi uyduğunu öğrendim.


Şimdiye kadar denedim:

Postfix'i yükledim ve yalnızca özel e-posta sağlayıcımın (Windows'ta olduğu gibi) smtp sunucusunu kullanacak şekilde yapılandırmak istedim . Bu yüzden php.ini'yi böyle karıştırdım:

[mail function]
; For Win32 only.
;SMTP = localhost
;smtp_port = 25

; For Win32 only.
;sendmail_from = me@example.com

sendmail_path = /etc/postfix
mail.add_x_header = On

"Sadece Win32" -stuff yorum yaptığımı unutmayın. /Etc/postfix/main.cf bu gibi görünüyor:

smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
myhostname = ubuntu
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
sender_canonical_maps = hash:/etc/postfix/sender_canonical
mydestination = ubuntu, localhost.localdomain, localhost
relayhost = mail.gmx.net
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only

/ etc / aliases değişmedi:

# Required aliases
postmaster: root
MAILER-DAEMON:  postmaster

# Common aliases
abuse:      postmaster
spam:       postmaster

/ etc / postfix / sasl_password :

my.providers.smtp my_login:my_password

/ Etc / postfic / sender_canonical:

postmaster my.email@ddress.com

Ne oluyor:

Yani yaptığımda

> sudo /etc/init.d/postfix start

her şey yolunda görünüyor ve /var/log/mail.log şöyle diyor: "ubuntu postfix / master [9720]: arka plan programı başladı - sürüm 2.8.5, yapılandırma / etc / postfix"

Ama PHP-betiğimi çalıştırdığımda (Windows ve Sendmail ile iyi çalıştı), sadece geçiyor ve hiçbir şey olmuyor, bir hata bile kaydedilmiyor.


Aslında elde etmek istediğim şey:

Yerel olarak bir e-ticaret web sitesinde çalışıyorum. Adanmış web sunucusu üzerinde iyi çalışıyor, ancak aynı zamanda bariz nedenlerle yerel olarak çalışmasını istiyorum. Bazı durumlarda, e-posta gönderir ve bunları Thunderbird ile veya başka bir şekilde almak istiyorum. Postfix'i aşırı kullanmak burada mı? E-posta almama gerek yok - sadece gönderilen postaları bir şekilde görünür yapmak istiyorum. Bu sorun için herhangi bir yararlı adım adım öğretici bulamadım (ne Senmail ne de Postfix ile ilgili - ama dürüst olmak gerekirse, Linux için çok yeniyim).

Yanıtlar:


13

Php.ini dosyasında:

sendmail_path = /etc/postfix

Sendmail (veya uyumlu) ikili dosyaya giden yol olmalıdır.
Doğru olmayan postfix'in yapılandırma dizinine ayarladınız.

Tarihsel nedenlerle, genellikle /usr/bin/sendmailbir uyumluluk bağlantısı olarak korunur.
sendmaililk etrafında (sanırım) oldu ve hemen hemen her şey sadece yüklü MTA olduğunu varsayar. Öyleyse, değiştirilmediğinde, bir symlink yapar, böylece hiçbir şey kırılmaz.


Çok teşekkür ederim! Sendmail ve Postfix'in neden ve ne şekilde birlikte çalıştığını tam olarak anlamama rağmen - şimdi çalışıyor! Postfix'e ayarlama hakkında nerede okuduğumu hatırlayamıyorum, ancak bu benim durumumda doğru ayar:sendmail_path = "/usr/sbin/sendmail -t -i"
Quasdunk

Biraz daha fazla bilgi eklendi - temelde birlikte çalışmıyorlar, sendmail'iniz yok, ancak postfix var gibi görünüyor, çünkü çok fazla şey orada olmasını bekliyor :) Sendmail_path'i eşit olarak postfix ikili dosyası.
Sezyum

1
Hatırlıyorum! Sendmail yıllarca böcek sonrası hata sonrası hata vardı. Bir noktada, ~ / .forward'ınıza salt kök komutu ekleyebilir, kendinize bir posta gönderebilir ve Unix / Linux sistemindeki her şeyi yapabilirsiniz. Toplu Exodus vardı ve yeni posta sunucuları, sendmail gibi davranmak için tasarlanmış bir sendmail benzeri program içeriyordu, böylece kendilerini sendmail etrafında inşa eden diğer tüm programlar hala hiçbir çaba harcamadan çalışacaktı.

Ek bilgi için çok teşekkürler! Artık her şey daha anlamlı;) Yapabilseydim sana bir +1 daha verirdim, ama umarım bunu yararlı bulan başka biri benim için yapar :-D
Quasdunk

1

Localhost'tan (WAMP, XAMP veya LAMP) posta göndermek için PHPMailer paketini kullanabilirsiniz

Bu benioku dosyasında verilen aynı talimat olacaktır.

WAMP (pencereler):

Öncelikle "php.ini" dosyasını düzenlemeniz gerekir. Bu dosyayı bulmak için WAMP sunucusundan aşağıdaki kodu kullanarak phpinfo görüntüleyin. C: / wamp / www / içinde bir php dosyası [setting.php] oluşturun ve bu dosyaya aşağıdaki içeriği ekleyin.

<?php
     echo phpinfo();
?>

Tip localhost / setting.php tarayıcıda. Orada "Yüklü Yapılandırma Dosyası" arama php.ini yolu olacaktır .

Gelen php.ini uzantısı = php_openssl.dll yönelikti (virgül); dosya çıkarın. Şimdi sunucu ayarı bitti ...

  • Github'dan PHPMailer klasörünü indirdikten sonra,
  • Ayıkla-> Tam klasörü proje klasörünüze kopyalayın, örn. C: / wamp / www /
  • İndex.php dosyasını bulun.
  • Parametreyi ihtiyacınıza göre değiştirin.
  • Ardından tarayıcıya localhost / PHPMailer / index.php yazın .
  • Sonra e-posta gönderilirse başarılı mesajı gösterecektir, aksi takdirde hata mesajı verecektir.

LAMBA (Linux):

  • Linux durumunda, WAMP altında ilk noktayı açıkladığım gibi php.ini dosyasını düzenlemeye gerek yoktur.

  • Bir değişiklik daha proje veya Belge kök klasörü farklı.

  • Linux'ta varsayılan Belge kök klasörü / var / www olacaktır
  • Belge kök klasörünü kolayca değiştirebilirsiniz. Bunun için https://stackoverflow.com/a/17612396/1925943 adresini ziyaret edin.
  • PhpMailer bu belge kök klasörüne kopyalayın ve index.php ihtiyaç olarak düzenleyin.
  • Ardından tarayıcıya localhost / PhpMailer / index.php yazın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.