Tôi đang sử dụng PHPMailer để gửi email hoạt động tốt. Tuy nhiên, vấn đề là do nó gửi email đồng bộ, tải trang tiếp theo mất một thời gian dài.Gửi email Không đồng bộ qua PhpMailer
Tôi đang sử dụng PHPMailer như trong ví dụ này https://github.com/PHPMailer/PHPMailer/blob/master/examples/gmail.phps
Tôi tự hỏi nếu có một cách để làm cho gửi email không đồng bộ. Tôi nghiên cứu này và thấy rằng sendmail có một tùy chọn để thiết lập để "chế độ nền" DeliveryMode - Nguồn http://php.net/manual/en/function.mail.php
mail($to, $subject, $message, $headers, 'O DeliveryMode=b');
Tôi muốn biết nếu có điều gì tương tự có thể được thực hiện trong PHPMailer? Có ai đã có bất kỳ thành công với điều này?
EDIT: - (thông tin bổ sung) Nó có vẻ như PHPMailer có thể được cấu hình để sử dụng sendmail - https://github.com/PHPMailer/PHPMailer/blob/master/class.phpmailer.php Vì vậy, tôi tự hỏi nếu điều này có thể được bằng cách nào đó đòn bẩy để cho phép giao nền.
/**
* Which method to use to send mail.
* Options: "mail", "sendmail", or "smtp".
* @type string
*/
public $Mailer = 'mail';
/**
* The path to the sendmail program.
* @type string
*/
public $Sendmail = '/usr/sbin/sendmail';
/**
* Whether mail() uses a fully sendmail-compatible MTA.
* One which supports sendmail's "-oi -f" options.
* @type boolean
*/
public $UseSendmailOptions = true;
/**
* Send messages using $Sendmail.
* @return void
*/
public function isSendmail()
{
$ini_sendmail_path = ini_get('sendmail_path');
if (!stristr($ini_sendmail_path, 'sendmail')) {
$this->Sendmail = '/usr/sbin/sendmail';
} else {
$this->Sendmail = $ini_sendmail_path;
}
$this->Mailer = 'sendmail';
}
Ngoài ra - rõ ràng là có cách nào để thiết lập tùy chọn sendmail qua php.ini http://blog.oneiroi.co.uk/linux/php/php-mail-making-it-not-suck-using-sendmail/
Tôi muốn làm điều này như một cuộc tranh cãi nội tuyến cuộc gọi api vs php.ini để isnt một toàn cầu thay đổi. Có ai đã thử điều này?
Phản hồi tuyệt vời. Cảm ơn vì lời giải thích chi tiết. Nhiều đánh giá cao!! Tôi là một phần của một noob khi nói đến vấn đề này - bạn có bất kỳ khuyến nghị mà trên đó máy chủ mail để lựa chọn/cài đặt. Tôi đang sử dụng gói lưu trữ được chia sẻ. Không chắc chắn nếu máy chủ web của tôi sẽ cho phép tôi cài đặt tùy chỉnh. – rogerb
Hầu hết các bản phân phối Linux đều sử dụng postfix, mà tôi thích exim hơn. Có rất nhiều người khác mặc dù. Nếu ISP của bạn sẽ không cho phép bạn cài đặt một, họ có thể cung cấp một cái gì đó đã có, hoặc một máy chủ thông minh gần đó - kiểm tra tài liệu của họ, mở một vé hỗ trợ. Nếu không, tôi khuyên bạn nên cài đặt nhà cung cấp dịch vụ mới ... – Synchro
Cảm ơn @Synchro. Tôi đã kết thúc bằng cách sử dụng máy chủ thư mặc định được cung cấp bởi nhà cung cấp dịch vụ lưu trữ của tôi và nhận thấy (với dấu thời gian) rằng nó mất khoảng 2 giây cho mỗi email. Vì vậy, tôi gọi là webhost của tôi và họ nói rằng kể từ khi tôi đang ở trên một kế hoạch lưu trữ được chia sẻ, sự chậm trễ đó được mong đợi (rõ ràng máy chủ thư của họ gửi đến một proxy nơi xếp hàng của nó trước khi gửi). Cuối cùng tôi đặt "-O DeliveryMode = b" trong php.ini của tôi (http://blog.oneiroi.co.uk/linux/php/php-mail-making-it-not-suck-using-sendmail/) tạo ra sự khác biệt rất lớn. Các email hiện đang được gửi ở chế độ nền và tập lệnh của tôi sẽ trả lại sau ** 0,16 giây! ** – rogerb