2012-01-27 37 views

Trả lời

1

Bạn không thể. swiftmailer/php không thực sự gửi thư cho bạn, họ chỉ trao nó cho máy chủ SMTP và máy chủ THAT sẽ gửi cho bạn. Bạn cần phải yêu cầu SMTP không xử lý hàng đợi gửi đi để phân phối 'dừng'.

Trong điều kiện thực tế, swift/php chỉ cần đi đến góc và thả phong bì của bạn vào hộp thư. Xe tải bưu chính xuất hiện ngay sau đó và bắt đầu quá trình gửi thư trên đường đi qua hệ thống bưu điện. Nhưng điều đó hoàn toàn nằm ngoài tầm nhìn của PHP.

+1

Điều gì sẽ xảy ra nếu tôi đang sử dụng sendmail? (Swift_SendmailTransport) – crickeys

+0

sendmail là một trong nhiều máy chủ SMTP. –

5

Đây là một câu hỏi cũ, nhưng kể từ khi nó đến trong tìm kiếm google của tôi, tôi sẽ trả lời nó với những gì tôi đã tìm ra.

CÓ! Swiftmailer có khả năng ghi vào một ống chỉ thay vì gửi ngay lập tức. Triển khai khá dễ dàng:

$spool = new Swift_FileSpool('/where/you/want/your/spool'); 
$transport = Swift_SpoolTransport::newInstance($spool); 
$mailer = Swift_Mailer::newInstance($transport); 

Điều này cho phép người viết thư mau chóng viết thư rồi gửi chúng. Sau đó, sử dụng công việc cron hoặc trình kích hoạt khác gửi tin nhắn bằng cách sử dụng một cái gì đó như:

$spool = new Swift_FileSpool('/where/you/put/your/spool'); 
$spool_transport = Swift_SpoolTransport::newInstance($spool); 

// Create the smtp transport. 

$smtp_transport = Swift_SmtpTransport::newInstance('your.smtp.host', 25); 

// Get the messages from the spool 
$spool = $spool_transport->getSpool(); 

// Send the messages via the real transport. 
$sent = $spool->flushQueue($smtp_transport); 
Các vấn đề liên quan