回答
首先我店,我需要在一個短暫的表(未臨時的信息,只是一個正常的桌子,我完成後放棄)。
然後我生成郵件,刪除已處理的記錄,並將生成的郵件放入「發件箱」表中。
最後,一個腳本每隔N分鐘發送一個郵件,然後從發件箱表中刪除該郵件。
爲什麼是瞬態表?因爲發生這一切的服務器的時間限制非常嚴格。使用上述方法允許我部分生成郵件;您可以安全地重新運行生成階段,而無需擔心生成的重複郵件。因此,儘管服務器將作業中止,但腳本仍在繼續。
發送腳本發送(60/N)* M郵件一小時,再次在服務器的限制內工作。
我會建議使用梨包郵件(http://pear.php.net/package/Mail)和Mail_Mime(http://pear.php.net/package/Mail_Mime)。
如果你需要一個排隊系統,你可以嘗試使用Gearman(http://gearman.org/)
我用Zend_Mail。下面的例子(從docs)展示瞭如何在一個SMTP連接發送多個郵件:
// Create transport
$config = array('name' => 'sender.example.com');
$transport = new Zend_Mail_Transport_Smtp('mail.example.com', $config);
// Set From & Reply-To address and name for all emails to send.
Zend_Mail::setDefaultFrom('[email protected]', 'John Doe');
Zend_Mail::setDefaultReplyTo('[email protected]','Jane Doe');
// Loop through messages
for ($i = 0; $i < 5; $i++) {
$mail = new Zend_Mail();
$mail->addTo('[email protected]', 'Test');
$mail->setSubject(
'Demonstration - Sending Multiple Mails per SMTP Connection'
);
$mail->setBodyText('...Your message here...');
$mail->send($transport);
}
// Reset defaults
Zend_Mail::clearDefaultFrom();
Zend_Mail::clearDefaultReplyTo();
你只需要修改循環來從數據庫具體到每一個消息要發送的數據。此外,您不需要整個框架來使用Zend_Mail
。
看看: http://framework.zend.com/manual/en/zend.mail.multiple-emails.html
我認爲首先要考慮的是,可能需要一些時間來處理 - 所以不應該做一個同步Web請求 - 見
Best way to manage long-running php script?
然後有關於創建HTML電子郵件的各種問題。你可能想看看現成的軟件包之一,例如phpmailer來生成電子郵件本身。或者,如果內容非常複雜,可以考慮將其設置爲網頁,或許使用模板系統 - 但請記住限制對其的任何外部訪問。例如
....
$content=file('http://localhost/generate_email.php?email='
. urlencode($db_row['recipient']));
mail($db_row['recipient'], $subject, $content);
HTH
C.:
<?php
if ($_SERVER["REMOTE_ADDR"]!='127.0.0.1') {
die ('NO ACCESS!');
}
$send_to=$_GET['email'];
$dbh=mysql_connect(...);
....
在腳本
然後
我喜歡卡里姆的想法,但我會把try/catch
圍繞$mail->send($transport)
這種方式,你可以跟蹤什麼有和什麼沒有發送,並相應地記錄或標記在相關的數據庫中。
- 1. 使用PHP發送HTML電子郵件
- 2. 批量發送大量電子郵件
- 3. PHP的HTML電子郵件不發送
- 4. Html/php電子郵件發送
- 5. 從PHP發送HTML電子郵件
- 6. 發送HTML電子郵件
- 7. Python - 發送大量電子郵件
- 8. 大量發送電子郵件
- 9. 在asp.net發送大量電子郵件
- 10. 用PHP郵件發送電子郵件()
- 11. 用PHP發送大量電子郵件的最佳方式
- 12. PHP發送電子郵件多次發送電子郵件
- 13. 以PHP發送批量電子郵件
- 14. PHP發送批量電子郵件
- 15. PHP發送電子郵件
- 16. PHP發送電子郵件
- 17. PHP發送電子郵件
- 18. 使用PHP發送大量電子郵件
- 19. 如何用PHP腳本和cronjobs大量發送電子郵件
- 20. PHP:批量發送大量電子郵件
- 21. 用html電子郵件發送電子郵件
- 22. 從變量發送來自PHP的HTML電子郵件
- 23. 使用PHP發送HTML電子郵件:包括HTML文件
- 24. 如何通過Php/MySQL發送大量(10,000+)的電子郵件?
- 25. 發送PHP腳本中的大量電子郵件
- 26. PHP郵件不發送電子郵件
- 27. 發送電子郵件使用PHP的電子郵件發送給多人
- 28. 使用HTML + Javascript發送電子郵件
- 29. 通過Php發送大量電子郵件(專家意見)
- 30. html php發送表單不發送電子郵件