Gửi thư bằng PHP, LAMPP và PostFix


9

Tôi đã cố gắng được 2 ngày rồi và tôi không thể làm việc đơn giản nhất.

Vấn đề: Gửi email từ PHP đến địa chỉ email của tôi không hoạt động

Tôi đã làm việc với WindowsSendmail (Sendmail nằm trong gói XAMPP) trước đây và mọi thứ đều ổn. Gói XAMPP (1.7.7) cho Linux không được tích hợp Sendmail. Vì vậy, sau khi loay hoay một chút, tôi phát hiện ra rằng Postfix phù hợp hơn với môi trường LAMPP.


Những gì tôi đã cố gắng cho đến nay:

Tôi đã cài đặt Postfix và muốn định cấu hình nó để chỉ sử dụng máy chủ smtp của nhà cung cấp email riêng của tôi (giống như trên Windows). Vì vậy, tôi đã nhầm lẫn php.ini của mình như thế này:

[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

Lưu ý rằng tôi đã nhận xét "chỉ dành cho Win32". Các /etc/postfix/main.cf Trông như thế này:

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 / bí danh là không thay đổi:

# 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

Điều gì xảy ra:

Vì vậy khi tôi làm

> sudo /etc/init.d/postfix start

mọi thứ dường như hoạt động tốt và /var/log/mail.log nói: "ubfox postfix / master [9720]: daemon bắt đầu - phiên bản 2.8.5, cấu hình / etc / postfix"

Nhưng khi tôi chạy tập lệnh PHP của tôi (hoạt động tốt với Windows và Sendmail), nó chỉ chạy qua và không có gì xảy ra, thậm chí không có lỗi nào được ghi lại.


Những gì tôi thực sự muốn đạt được:

Tôi đang làm việc tại một trang web thương mại điện tử. Nó chạy tốt trên máy chủ web chuyên dụng, nhưng tôi cũng muốn nó chạy cục bộ vì những lý do rõ ràng. Trong một số trường hợp, nó sẽ gửi email và tôi chỉ muốn có thể nhận chúng bằng Thunderbird hoặc bằng bất kỳ cách nào khác. Đang sử dụng Postfix quá mức cần thiết ở đây? Tôi không cần nhận email - Tôi chỉ muốn làm cho các thư được gửi hiển thị bằng cách nào đó. Tôi dường như không thể tìm thấy bất kỳ hướng dẫn từng bước hữu ích nào cho vấn đề này (không liên quan đến Senmail cũng như Postfix - nhưng, thành thật mà nói, tôi rất mới với Linux).

Câu trả lời:


13

Trong php.ini của bạn, điều này:

sendmail_path = /etc/postfix

Nên là đường dẫn đến nhị phân sendmail (hoặc tương thích).
Bạn đã đặt nó vào thư mục cấu hình của postfix không đúng.

Vì lý do lịch sử, thường /usr/bin/sendmailđược duy trì như một liên kết tương thích.
sendmaillà khoảng đầu tiên (tôi đoán vậy) và hầu hết mọi thứ chỉ cho rằng nó nằm trong MTA được cài đặt. Vì vậy, khi không, sự thay thế tạo ra một liên kết tượng trưng để không có gì bị hỏng.


Cảm ơn bạn rất nhiều! Mặc dù tôi không hiểu tại sao và bằng cách nào Sendmail và Postfix phối hợp với nhau - nó hoạt động ngay bây giờ! Không thể nhớ nơi tôi đã đọc về việc đặt nó thành postfix, nhưng đây là cài đặt chính xác trong trường hợp của tôi:sendmail_path = "/usr/sbin/sendmail -t -i"
Quasdunk

Đã thêm một chút thông tin - về cơ bản là chúng không hoạt động cùng nhau như vậy, bạn không có sendmail, nhưng postfix đang giả vờ, bởi vì rất nhiều thứ mong đợi nó ở đó :) Bạn cũng có thể đặt sendmail_path vào nhị phân postfix.
Caesium

1
Tôi nhớ! sendmail có lỗi sau lỗi sau lỗi sau lỗi trong nhiều năm. Tại một thời điểm, bạn có thể bao gồm một lệnh chỉ root trong ~ / .forward, gửi cho mình một thư và làm bất cứ điều gì trên hệ thống Unix / Linux. Đã có Exodus hàng loạt và các máy chủ thư mới bao gồm một chương trình giống như sendmail được thiết kế để hoạt động giống như sendmail để tất cả các chương trình khác được xây dựng xung quanh sendmail vẫn hoạt động mà không cần nỗ lực thêm.

Cảm ơn rất nhiều cho các thông tin bổ sung! Bây giờ tất cả đều có ý nghĩa hơn;) Tôi sẽ cho bạn thêm +1 nếu tôi có thể, nhưng tôi hy vọng ai đó thấy điều này hữu ích sẽ giúp tôi làm điều đó :-D
Quasdunk

1

Để gửi thư từ localhost (WAMP, XAMP hoặc LAMP), bạn có thể sử dụng gói PHPMailer

Đây sẽ là hướng dẫn tương tự được đưa ra trong tập tin readme ..

WAMP (cửa sổ):

Trước tiên, bạn phải chỉnh sửa "php.ini" Để tìm tệp này hiển thị phpinfo bằng cách sử dụng mã sau từ máy chủ WAMP. Tạo một tệp php [settings.php] bên trong C: / wamp / www / và thêm nội dung sau vào tệp đó.

<?php
     echo phpinfo();
?>

localhost / setting.php tại trình duyệt. Có tìm kiếm cho "Tệp cấu hình đã tải" Đó sẽ là đường dẫn đến php.ini của bạn .

Trong tệp php.ini, loại bỏ; (dấu hai chấm) được cung cấp cho `extension = php_openssl.dll. Bây giờ cài đặt máy chủ đã kết thúc ...

  • Sau khi tải xuống thư mục PHPMailer từ github
  • Trích xuất-> Sao chép toàn bộ thư mục vào thư mục dự án của bạn, ví dụ C: / wamp / www /
  • Tìm tệp index.php.
  • Thay đổi tham số theo nhu cầu của bạn.
  • Sau đó, trong trình duyệt gõ localhost / PHPMailer / index.php .
  • Sau đó, nó sẽ hiển thị thông báo thành công nếu email được gửi, nếu không nó sẽ thông báo lỗi.

LAMP (Linux):

  • Trong trường hợp của linux, không cần chỉnh sửa tệp php.ini như tôi đã giải thích điểm đầu tiên trong WAMP.

  • Một thay đổi nữa là dự án hoặc thư mục gốc Tài liệu là khác nhau.

  • Trong Linux, thư mục gốc Tài liệu mặc định sẽ là / var / www
  • Bạn có thể thay đổi thư mục gốc Tài liệu dễ dàng. Đối với chuyến thăm đó https://stackoverflow.com/a/17612394/1925943
  • Sao chép PhpMailer vào thư mục gốc của tài liệu này và chỉnh sửa index.php theo nhu cầu của bạn.
  • Sau đó nhập localhost / PhpMailer / index.php trong trình duyệt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.