2012-11-02 29 views
7

Tôi đã tìm kiếm ở khắp mọi nơi cho điều này và tôi thực sự muốn giải quyết vấn đề này. Trong quá khứ, tôi chỉ sử dụng một dịch vụ SMTP như SendGrid cho PHP và một plugin gửi thư như SwiftMailer. Tuy nhiên tôi muốn sử dụng PHP.Làm cách nào để sử dụng hàm PHP Mail() trong PHP-FPM? Trên Nginx?

Về cơ bản thiết lập của tôi (Tôi mới để thiết lập máy chủ, và đây là thiết lập cá nhân của tôi sau một tutorial)

Nginx 
Rackspace Cloud 
PHP 5.3 PHP-FPM 
Ubuntu 11.04 

My phpinfo() lợi nhuận này về các mục Mail:

mail.log      no value 
mail.add_x_header   On 
mail.force_extra_parameters no value 

sendmail_from no value 
sendmail_path /usr/sbin/sendmail -t -i 

SMTP  localhost 
smtp_port 25 

Có thể ai đó giúp tôi như là lý do tại sao Mail() sẽ không hoạt động - tập lệnh của tôi đang hoạt động trên tất cả các trang web khác, đó là lệnh thư thông thường. Tôi có cần thiết lập nhật ký hoặc bật một số cổng PHP trên máy chủ không?

kịch bản mẫu của tôi

<? 
    # FORMS VARS 

    // $to = $customers_email; 
    // $to = $customers_email; 

    $to = $_GET["customerEmailFromForm"]; 

    $subject = "Thank you for contacting Real-Domain.com"; 
    $message = " 
    <html> 
    <head> 
    </head> 
    <body> 
    Thanks, your message was sent and our team will be in touch shortly. 
    <img src='http://cdn.com/emails/thank_you.jpg' /> 
    </body> 
    </html> 
    "; 
    $headers = "MIME-Version: 1.0" . "\r\n"; 
    $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n"; 
    $headers .= 'From: <[email protected]>' . "\r\n"; 

    // SEND MAIL 
    mail($to,$subject,$message,$headers); 

?> 

Cảm ơn

Trả lời

12

Vì không có giá trị cho sendmail_from bạn cần phải thiết lập một trong php.ini:

sendmail_from = "[email protected]" 

Hoặc trong tiêu đề khi bạn gọi đến mail :

mail($to, $subject, $message, 'From: [email protected]'); 

Địa chỉ email nên tuân theo RFC 2822 ví dụ:

Nếu không được, bạn đã thực sự được cài đặt một hệ thống thư điện tử làm việc?

Nếu không, bạn có thể cài đặt postfix với lệnh sau đây:

sudo apt-get install postfix

Xem dưới đây để biết thêm thông tin về cấu hình postfix để sử dụng với PHP trong Ubuntu:

https://serverfault.com/questions/119105/setup-ubuntu-server-to-send-mail

+0

Xem câu trả lời được cập nhật với các ví dụ. –

+0

Đây có phải là địa chỉ thực không? – TheBlackBenzKid

+0

Không, cung cấp cho bạn không muốn nhận phản hồi. –

9

Nếu thấy rằng trên một cài đặt mới của Ubuntu 14.04 với nginx và PHP-FPM (không apache), không phải postfix cũng không phải mailutils được cài đặt.

tôi đã sử dụng: sudo apt-get install postfix

(như trong câu trả lời đề nghị)

sudo apt-get install mailutils

để có được tất cả mọi thứ làm việc trên máy chủ của tôi. Cả hai đều được yêu cầu. Một mục trong PHP.ini (như đã đề cập trong câu trả lời được đề nghị) cũng có thể có ích, nhưng không có cả hai gói khác, nó sẽ không tạo ra sự khác biệt.

+0

Cảm ơn thông tin phản hồi và thông tin chi tiết của bạn – TheBlackBenzKid

+0

Bạn được chào đón. Sau khi tôi thiết lập điều này, tôi phát hiện ra rằng thư từ máy chủ của tôi không được gửi đến miền email chính của tôi (mặc dù nó đã được gửi đến các miền khác). Hóa ra postfix sẽ (theo mặc định) cố gắng gửi thư cục bộ. Việc sửa lỗi cho việc này là xóa tên miền khỏi các vòng lặp – TheDavidJohnson

+0

! đụng vào nút "Add Comment" sớm có ... Việc sửa chữa là để loại bỏ các tên miền từ 'mydestination' thông số trong tập tin này: '/ etc/postfix/main.cf' – TheDavidJohnson

Các vấn đề liên quan