2011-09-28 32 views
17

Tôi đang sử dụng Ubuntu.I cài đặt sendmail trong máy chủ địa phương của tôi bằng cách sử dụng lệnh sauGửi email cần có thời gian dài trong localhost

sudo apt-get install sendmail 

Bây giờ tôi muốn kiểm tra xem email đi từ localhost của tôi sử dụng đoạn mã sau php.

<?php 
$to = "[email protected]"; 
$subject = "Test mail"; 
$message = "Hello! This is a simple email message."; 
$from = "[email protected]"; 
$headers = "From:" . $from; 
mail($to,$subject,$message,$headers); 
echo "Mail Sent."; 
?> 

Khi tôi thực thi mã, Phải mất rất nhiều thời gian và cuối cùng lặp lại thông báo là Thư đã gửi. Có khả năng sửa lỗi này không?

+0

nâng cấp máy chủ của bạn? hoặc có thể bạn có một vấn đề tra cứu dns? –

+0

có thể đây là câu hỏi hay hơn về Lỗi máy chủ: http://serverfault.com/ –

+0

Chạy tập lệnh của bạn dưới 'strace -f' để xác định xem đó là lệnh nào. – sanmai

Trả lời

0

Trì hoãn thường chỉ ra thời gian chờ DNS. Máy của bạn có được cấu hình với các mục nhập DNS thích hợp không? Tôi sẽ thử làm một bài kiểm tra bằng cách sử dụng thư trên dòng lệnh vì điều này sẽ cô lập vấn đề.

0

Trừ khi bạn biết rõ về Sendmail, có thể bạn đang cài đặt một số MTA khác. ssmtpd đã được đề xuất trong một câu trả lời khác; một lựa chọn phổ biến là Posfix.

13

Chỉnh sửa các tập tin /etc/hosts và chắc chắn rằng dòng đầu tiên như sau:

127.0.0.1 localhost localhost.localdomain myhostname

Chỉnh sửa các tập tin

sendmail cấu hình ( /etc/mail/sendmail.cf trong Ubuntu) và bỏ chú thích số line #O:

O HostsFile =/etc/hosts

Khởi động lại máy tính hoặc chạy sudo service sendmail restart.

Máy tính sẽ khởi động nhanh hơn bây giờ và chức năng mail() sẽ trở lại gần như ngay lập tức.

TUY NHIÊN, các email sẽ không thực sự được gửi trừ khi bạn làm theo bước 5.

Bạn phải sử dụng mới sendmail -f tùy chọn bất cứ khi nào bằng cách sử dụng chức năng mail.

Ví dụ:

mail('[email protected]', 'the subject', 'the message', null, '[email protected]'); 
+19

bước 5? Không có 'bước' nào trong câu trả lời của bạn. – MrVimes

+0

Cảm ơn! Điều này đã làm các trick cho Vagrant Box của tôi! –

+2

bước 5 xuất phát từ câu hỏi này http://serverfault.com/questions/173762/php-mail-function-painfully-slow-on-local-development-machine/221894#221894 – cirovladimir

2

Tôi biết câu hỏi này đã được trả lời, nhưng tôi gửi bài này với hy vọng nó có thể giúp người khác tìm kiếm một giải pháp khác nhau cho vấn đề này.

Đối với tôi, tôi chỉ cần đặt Tên miền đầy đủ của máy chủ (FQDN) vào /etc/mailname. Ví dụ: server.example.com.

Khởi động lại Sendmail để áp dụng các thay đổi.

$ sudo service sendmail restart

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