Mengirim email dengan PHP, LAMPP dan PostFix

9

Saya sudah mencoba selama 2 hari penuh sekarang, dan saya tidak bisa mendapatkan hal yang paling sederhana untuk bekerja.

Masalahnya: Mengirim eMail dari PHP ke alamat eMail saya tidak berfungsi

Saya telah bekerja dengan Windows dan Sendmail (Sendmail ada dalam paket XAMPP) sebelumnya dan semuanya baik-baik saja. Paket XAMPP (1.7.7) untuk Linux tidak terintegrasi dengan Sendmail. Jadi setelah mencari-cari sedikit, saya menemukan bahwa Postfix lebih cocok untuk lingkungan-LAMPP.


Apa yang saya coba sejauh ini:

Saya telah menginstal Postfix dan ingin mengkonfigurasinya untuk hanya menggunakan smtp-server penyedia eMail pribadi saya (seperti yang terjadi pada Windows). Jadi saya sudah mengkonfigurasi php.ini saya seperti ini:

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

; For Win32 only.
;sendmail_from = [email protected]

sendmail_path = /etc/postfix
mail.add_x_header = On

Perhatikan bahwa saya sudah berkomentar "-saya Win32" saja. The /etc/postfix/main.cf Sepertinya ini:

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 tidak berubah:

# 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 [email protected]

Apa yang terjadi:

Jadi ketika saya melakukannya

> sudo /etc/init.d/postfix start

semuanya tampaknya berfungsi dengan baik dan /var/log/mail.log mengatakan: "ubuntu postfix / master [9720]: daemon dimulai - versi 2.8.5, konfigurasi / etc / postfix"

Tetapi ketika saya menjalankan skrip PHP saya (yang bekerja dengan baik dengan Windows dan Sendmail), itu hanya berjalan melalui dan tidak ada yang terjadi, bahkan kesalahan dicatat.


Apa yang sebenarnya ingin saya capai:

Saya bekerja secara lokal di situs web e-commerce. Ini berjalan dengan baik di server web khusus, tetapi saya ingin juga menjalankannya secara lokal untuk alasan yang jelas. Dalam beberapa kasus, ia mengirim email, dan saya hanya ingin dapat menerimanya dengan Thunderbird atau dengan cara lain apa pun. Apakah menggunakan Postfix berlebihan di sini? Saya tidak perlu menerima email - saya hanya ingin membuat email yang dikirim terlihat. Saya sepertinya tidak bisa menemukan langkah-demi-langkah-tutorial yang bermanfaat untuk masalah ini (baik mengenai Senmail maupun Postfix - tetapi, jujur ​​saja, saya sangat baru di Linux).

Quasdunk
sumber

Jawaban:

13

Di php.ini Anda, ini:

sendmail_path = /etc/postfix

Seharusnya path ke binary sendmail (atau kompatibel).
Anda telah mengaturnya ke direktori konfigurasi postfix yang tidak benar.

Karena alasan historis, biasanya /usr/bin/sendmaildipertahankan sebagai tautan kompatibilitas.
sendmailada di sekitar pertama (saya kira) dan cukup banyak semuanya hanya menganggap itu ada di MTA yang diinstal. Jadi ketika tidak, penggantian membuat symlink sehingga tidak ada yang rusak.

Cesium
sumber
Terima kasih banyak! Meskipun saya tidak begitu mengerti mengapa dan dengan cara apa Sendmail dan Postfix bekerja bersama - ia bekerja sekarang! Tidak ingat di mana saya membaca tentang mengaturnya ke postfix, tetapi ini adalah pengaturan yang benar dalam kasus saya:sendmail_path = "/usr/sbin/sendmail -t -i"
Quasdunk
Menambahkan sedikit info lagi - pada dasarnya mereka tidak bekerja bersama-sama, Anda tidak memiliki sendmail, tetapi postfix berpura-pura, karena begitu banyak hal mengharapkannya ada di sana :) Anda juga dapat mengatur sendmail_path untuk menunjuk pada binary postfix.
Cesium
1
Aku ingat! Sendmail memiliki bug setelah bug setelah bug setelah bug selama bertahun-tahun. Pada satu titik, Anda dapat memasukkan perintah root saja di ~ / .forward, kirim sendiri surat, dan lakukan apa saja di sistem Unix / Linux. Ada Exodus massal, dan server mail baru menyertakan program seperti sendmail yang dirancang untuk berperilaku seperti sendmail sehingga semua program lain yang telah membangun sendiri di sekitar sendmail masih akan bekerja tanpa upaya tambahan.
Terima kasih banyak atas informasi tambahannya! Semuanya lebih masuk akal sekarang;) Saya akan memberi Anda +1 lagi jika saya bisa, tetapi saya berharap orang lain yang menganggap ini sama membantu akan melakukannya untuk saya :-D
Quasdunk
1

Untuk mengirim email dari localhost (WAMP, XAMP, atau LAMP) Anda dapat menggunakan paket PHPMailer

Ini akan menjadi instruksi yang sama yang diberikan dalam file readme ..

WAMP (windows):

Pertama, Anda harus mengedit "php.ini" Untuk menemukan file ini tampilkan phpinfo dengan menggunakan kode berikut dari server WAMP. Buat satu file php [setting.php] di dalam C: / wamp / www / dan tambahkan konten berikut ke file itu.

<?php
     echo phpinfo();
?>

Ketik localhost / setting.php di browser. Di sana cari "Loaded Configuration File" Itu akan menjadi path ke php.ini Anda .

Dalam file php.ini hapus; (semi colon) yang diberikan kepada `extension = php_openssl.dll. Sekarang pengaturan server selesai ...

  • Setelah mengunduh folder PHPMailer dari github,
  • Ekstrak-> Salin folder lengkap ke folder proyek Anda yaitu C: / wamp / www /
  • Temukan file index.php.
  • Ubah parameter sesuai kebutuhan Anda.
  • Kemudian pada browser ketik localhost / PHPMailer / index.php .
  • Maka akan muncul pesan yang berhasil jika email terkirim, selain itu akan memberikan pesan kesalahan.

LAMP (Linux):

  • Dalam hal linux, Tidak perlu mengedit file php.ini seperti yang saya jelaskan poin pertama di bawah WAMP.

  • Satu lagi perubahan adalah proyek atau folder root Dokumen berbeda.

  • Di Linux folder root dokumen standar adalah / var / www
  • Anda dapat mengubah folder root dokumen dengan mudah. Untuk itu kunjungi https://stackoverflow.com/a/17612396/1925943
  • Salin PhpMailer ke folder root dokumen ini dan edit index.php sesuai kebutuhan Anda.
  • Kemudian ketik localhost / PhpMailer / index.php di browser.
shashidhara
sumber