2010-07-04 47 views
20

Tôi cần kiểm tra chức năng sử dụng thư của PHP()
Làm cách nào để thực hiện việc này mà không tải lên tập lệnh lên máy chủ và kiểm tra trực tuyến?
Tôi còn đang phát triển gì nữa mà không có kết nối Internet.
Tôi đang chạy trên Mac OSX chạy máy chủ cục bộ từ XAMPP.Kiểm tra chức năng thư của PHP từ localhost

+0

thể' t bạn chỉ cần chạy kịch bản của bạn từ localhost? –

Trả lời

0

Thiết lập máy chủ pop3 trong Máy cục bộ. Nhiều người có sẵn miễn phí. và gửi thư trong miền địa phương của bạn bằng cách sử dụng sendmail.

Theo mặc định, không bắt buộc phải đặt đường dẫn sendmail trong Linux. ít nhất tôi không bao giờ cần nó. chỉ cần sử dụng chức năng mail() và nhấn thư trên miền địa phương

+0

Đó sẽ là một máy chủ SMTP buddy pop3 là để thực sự nhận được email không gửi thư ra. – Prix

+0

LOL Ya Nhưng sendmail sẽ gửi thư ở đâu ???????????? anh ấy không có kết nối Internet. Được rồi ?????? Thats reasonhe cần một Máy chủ POP3 để chạy thử nghiệm cục bộ. >> chúng tôi không nói về máy chủ SMTP. sendmail của nó –

+0

có quyền truy cập vào máy như anh ta chỉ với máy chủ mail anh ta có thể xác minh nó mà không cần phải đi qua một kết nối pop3. – Prix

1

Hmm. Tôi đã không cố gắng này, nhưng trong php.ini bạn có thể thiết lập "sendmail_path" ... vì vậy trong lý thuyết bạn có thể viết kịch bản shell của riêng bạn mà chỉ cần viết đầu vào vào các tập tin văn bản, và thay đổi php.ini của bạn để sử dụng? Sau đó, chỉ cần chạy thử nghiệm và kiểm tra các tập tin văn bản!

50

Bạn không phải cài đặt MTA trên máy tính để kiểm tra chức năng mail() của PHP. Trên các hệ thống dựa trên Unix (Linux, * BSD, OS X, v.v.), bạn có thể đặt sendmail_path thành một cái gì đó như tee mail.out > /dev/null. Điều này sẽ đặt các email (bao gồm các tiêu đề) trong một tập tin gọi là mail.out.

Dưới đây là một ví dụ về cách nó sẽ làm việc:

[email protected]:~$ cat | php -d sendmail_path='tee mail.out > /dev/null' 
<?php 
mail('[email protected]', 'the subject', 'the body'); 
?> 
[email protected]:~$ cat mail.out 
To: [email protected] 
Subject: the subject 
X-PHP-Originating-Script: 1000:- 


the body 

Bạn có thể đặt sendmail_path trong tập tin php.ini của bạn. Nếu bạn muốn chắp thêm email vào tệp thay vì ghi đè mỗi lần, bạn có thể sử dụng tee -a thay vì chỉ tee.

+4

không nên nhận được 'trả lời'? – RCNeil

+2

Tôi muốn thấy điều này trước khi tôi dành tuổi để tìm cách gửi sendmail/postfix đang hoạt động – aland

+1

Tôi có thể đọc tệp này bằng ứng dụng email không? Trong trường hợp của tôi, tôi đang sử dụng 'tee -a' – Cesar

5

Một giải pháp tốt đẹp và đơn giản để thử nghiệm:

http://blogs.bigfish.tv/adam/2009/12/03/setup-a-testing-mail-server-using-php-on-mac-os-x/ Cập nhật liên kết: https://github.com/ifunk/smtp-catcher

+0

chỉ cần thiết lập này trên máy dev của tôi. rất hữu ích - cảm ơn! –

+0

Bất kỳ phiên bản nào không phải là mac này? – AlxVallejo

+0

Có một phần Windows nhỏ ở cuối trang. Trên các hệ thống Unix khác, tôi nghĩ bạn có thể giải quyết nó tương tự như trường hợp Mac. Liên kết – biziclop

6

Để kiểm tra việc gửi email từ apache thực hiện như sau

tạo một thư mục để lưu trữ email.

/home/username/Documents/TestEmails 

Cấp quyền cho apache. Từ thư mục Documents, chạy

sudo chgrp -R www-data TestEmails 

Sửa đổi các tập tin php.ini, mỏ nằm ở

/etc/php5/apache2/php.ini 

thiết sendmail_path

sendmail_path ='cat > /home/username/Documents/TestEmails/mail.txt' 

Restart apace2

sudo service apache2 restart 
+0

Nếu tôi đang sử dụng phần mềm máy chủ MAMP để phát triển trên máy chủ cục bộ thì sao? – Nathan

+0

Câu trả lời hay nhất làm việc cho tôi là câu trả lời dưới đây (http://stackoverflow.com/a/3176517/1130803), vì nó sử dụng 'tee' thay vì' cat' cho lỗi 'Invalid argument' trong OSX. Nếu sử dụng MAMP, tôi đoán lời khuyên tương tự sẽ được áp dụng, chỉ thay đổi đường dẫn đến nơi php.ini của bạn. –

+0

Điều này làm việc cho tôi, nhưng chỉ từ các kịch bản lệnh CLI; nhưng không phải từ dịch vụ web. Có cái gì khác tôi cần phải làm ngoài một khởi động lại apache? – orlybg

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