2008-09-02 18 views
6

Tôi không chắc mình đang sử dụng tất cả các thuật ngữ chính xác ở đây để được tha thứ.Hàm PHP mail() có hoạt động không nếu tôi không sở hữu bản ghi MX

Tôi chỉ cần đặt một trang web có biểu mẫu liên hệ gửi email bằng cách sử dụng hàm PHP mail(). Đủ đơn giản. Tuy nhiên, trang web trực tiếp không thực sự gửi email, trang web thử nghiệm thực hiện. Vì vậy, nó không phải là mã của tôi.

Đó là máy chủ được chia sẻ và chúng tôi có một trang web khác có cùng chức năng hoạt động hoàn hảo, vì vậy nó không phải là máy chủ.

Sự khác biệt duy nhất giữa hai trang web không hoạt động chỉ có máy chủ định danh trỏ đến chúng tôi và vì vậy bản ghi MX không bao giờ chạm vào máy chủ của chúng tôi.

Vì vậy, câu hỏi của tôi là, có thể một số người vui lòng xác nhận rằng hàm mail() sẽ không hoạt động nếu chúng tôi không có bản ghi MX trỏ đến máy chủ của chúng tôi. Cảm ơn

Trả lời

2

Xin chào các bạn, xin cảm ơn các câu trả lời, nó thực sự được đánh giá cao.

Sau khi bỏ qua vấn đề trong một vài tháng, nó đã xuất hiện trở lại, tuy nhiên tôi đã tìm thấy câu trả lời cho các vấn đề của tôi.

Thứ nhất, khi bạn trả lời đề xuất, hàm PHP và hàm mail() hoạt động như mong đợi. Thư đã được gửi đi.

Vấn đề nằm khi email được gửi, nó chỉ đơn giản giả định rằng vì nó được gửi từ mydomain.com đến email *@mydomain.com rằng chính email đó được lưu trữ trên cùng một máy chủ, vì vậy nó được gửi đến đó thay vào đó bỏ qua bản ghi MX.

OK nó phức tạp hơn một chút, nhưng đó là jist chung.

Chỉnh sửa: Tìm thấy phiên bản tốt hơn của chủ đề sendmail and MX records when mail server is not on web host.

0

Có, bạn có thể đưa vào những gì bạn muốn trong trường 'từ' và nó vẫn hoạt động.

3

Có. Nó sẽ chỉ làm việc tốt. Tôi có một kịch bản PHP bằng cách sử dụng hàm mail() với các bản ghi MX được đặt thành Google Apps.

Nếu hai tập lệnh nằm trên các máy chủ khác nhau (có một chút không rõ ràng từ bài đăng của bạn), hãy đảm bảo rằng máy chủ không chặn một số tiêu đề tùy chỉnh. Tôi đã có vấn đề với điều này khi tạo tập lệnh của tôi, nhưng xóa tất cả nhưng tiêu đề Từ đã khắc phục được sự cố.

2

Một số máy chủ (Godaddy là tệ nhất) chặn việc bạn sử dụng sendmail và thư().

Tôi thường sử dụng smtp để gửi email từ các ứng dụng php của mình và với PHPMailer thật dễ dàng. Nhiều ứng dụng đang sử dụng các phiên bản PHPMailer cũ hơn và đôi khi việc cập nhật nó có thể hữu ích. Nó cũng đủ dễ dàng để thêm nhanh chóng vào các tập lệnh ngắn.

1

Chức năng mail() gửi thư từ máy chủ lưu trữ tập lệnh. Vì nhiều nhà cung cấp dịch vụ lưu trữ được chia sẻ lưu trữ các máy chủ thư riêng biệt và do chức năng mail() không hỗ trợ bất kỳ loại xác thực nào, nhiều nhà cung cấp dịch vụ lưu trữ được chia sẻ chặn nó.

1

Nếu trang web sử dụng SPF, hãy nhớ đưa trang web gửi vào bản ghi SPF của bạn. Để biết thêm thông tin, hãy xem here.

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