2009-12-15 34 views
5

Tôi đang phát triển một ứng dụng web bằng PHP và Macbook của tôi, chạy Snow Leopard, thực sự đang gửi email khi hàm mail() của PHP được gọi. Đó là gửi email cho khách hàng và đó là BAD.Tắt tính năng gửi thư PHP trên Mac OS?

I COULD ngăn chặn điều này trong mã của tôi, nhưng tôi chỉ muốn tắt gửi thư cho máy của tôi. Có cách nào để làm điều này dưới Mac OS?

Trả lời

3

tôi thường sử dụng một lớp wrapper cho mail() để kiểm tra cho một hằng số (cái gì đó như DEBUG_MODE) và gửi email cho tôi thay vì nhận ban đầu (và bao gồm tất cả những người nhận ban đầu trong thân thư để tôi có thể xác nhận mọi thứ đang hoạt động). Đó là một chút công việc thêm lần đầu tiên, nhưng nó có nghĩa là tôi không phải lo lắng về việc gửi email cho những người "thực" nhưng tôi vẫn biết mọi thứ đang hoạt động.

Tôi đã đăng một simple example. Nó có thể sử dụng rất nhiều cải tiến (xử lý tiêu đề, đảm bảo các trường cc và bcc cũng bị tước đi), nhưng nó sẽ giúp bạn tận dụng tối đa đường về nhà.

+0

Chức năng tách lớp +1 như thế này là một ý tưởng hay (tm) – rossipedia

1

Điều đó có nghĩa là bạn phải cài đặt sendmail (hoặc một cái gì đó giả vờ là sendmail) tại một số thời điểm, nhưng bạn có lẽ nên ngăn chặn điều này trong mã của bạn ngoài việc vô hiệu hóa nó.

+0

OS X đi kèm với phiên bản có sẵn của postfix. –

+1

Chắc chắn di chuyển/usr/sbin/sendmail đến /usr/sbin/sendmail.original và thay thế sendmail bằng một tập lệnh sh trống nên thực hiện thủ thuật trên toàn cầu. –

+0

Nó không nên được cấu hình để thực sự làm bất cứ điều gì. –

0

Bạn có thể tắt thư() bằng cách thay đổi cài đặt SENDMAIL_PATH. Tài liệu here

2

Tại sao không di chuyển địa chỉ email sang tệp cấu hình, sau đó trên máy của bạn sử dụng một nhóm địa chỉ khác? Những thứ như thế không nên được mã hóa cứng trong ứng dụng.

Ví dụ: trong ứng dụng của tôi, tôi có cơ sở dữ liệu Config chứa tất cả thông tin đó. Khi ứng dụng đang được thực hiện, bảng Config được thiết lập với các địa chỉ/thông tin giả hoặc vô hại. Bằng cách đó, bạn không cần phải gây rối với bất kỳ thứ gì trên PC đang phát triển cũng như làm cho việc duy trì dễ dàng hơn, như thể địa chỉ email thay đổi.

+0

Tại sao lại là downvote? Điều này thực sự là một ý tưởng tốt và sạch hơn so với đúc thư(). –

+0

Ứng dụng của tôi có hàng trăm nghìn địa chỉ email người dùng. Giải pháp tồi. Mặc dù, tôi cho rằng một cuộc bỏ phiếu xuống là không công bằng, vì không đủ ngữ cảnh được cung cấp. –

+0

Nó không phải là một tai nạn mà hầu hết các khung ứng dụng web duy trì một khái niệm về môi trường sản xuất và môi trường phi sản xuất và đưa ra quyết định thời gian chạy phù hợp. "Giải pháp tồi" dường như hoàn toàn là của bạn. –

-1

Bạn có thể thử tùy chọn disable_functions trong php.ini.

ví dụ: disable_functions = mail

+0

Việc này có dẫn đến lỗi khi tập lệnh của anh ấy cố gửi thư không? –

+0

Đúng, nhưng đó là một cách để vô hiệu hóa chức năng thư, đó là câu hỏi được hỏi. –

3

Cảm ơn bạn đã đăng bài. Đây là giải pháp của tôi.

Tôi đã di chuyển/usr/sbin/sendmail đến /usr/sbin/sendmail.original và thay thế/usr/sbin/sendmail bằng tập lệnh giả. Tôi không muốn máy này đặc biệt gửi email.

Tôi cũng đã triển khai giải pháp thứ hai, nhờ đó tôi kiểm tra xem máy hiện tại có phải là máy phát triển hay không và nếu không, sẽ không có email nào được gửi đi. Đối với điều này tôi sử dụng một lá cờ, Config :: get ('IS_DEVELOPER').

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