рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░ред
рдореИрдВ Zend_Mail рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдИ-рдореЗрд▓ рдХрддрд╛рд░реЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдФрд░ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рд▓реЗрдЦ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдЬрд╛рдирдмреВрдЭрдХрд░ рд╕рдВрднрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░рд▓ рдХрд┐рдП рдЧрдП рд╣реИрдВ рдФрд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реЗ рдмрдВрдзреЗ рдирд╣реАрдВ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд▓реЗрдЦ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдПрдХ рд╡рд┐рдзрд┐ рджрд┐рдЦрд╛рдирд╛ рд╣реИ, рди рдХрд┐ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЛ рдХреЗрд╡рд▓ Zend рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рд╕реА рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдлрд┐рдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рд╕реАрдзреЗ рдмрд┐рдВрджреБ рдкрд░ рдЬрд╛рдПрдВред рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
- рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛;
- рдкрд░рд┐рд╡рд╣рди рдХрд╛ рд╡рд░реНрдЧ;
- рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рд╛рдЗрд▓ (рдореБрдХреБрдЯ рдкрд░ рдЪрд▓рд╛рддрд╛ рд╣реИ)ред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
CREATE TABLE email_queue ( id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, recipients TEXT NOT NULL, subject CHAR(255) NOT NULL, message TEXT NOT NULL, header TEXT NOT NULL, parameters TEXT, max_attempts TINYINT UNSIGNED NOT NULL DEFAULT 3, attempts TINYINT UNSIGNED NOT NULL DEFAULT 0, is_false TINYINT(1) UNSIGNED NOT NULL DEFAULT 0, in_process INT UNSIGNED DEFAULT NULL DEFAULT 0, time_last_attempt INT UNSIGNED DEFAULT NULL, create_time INT UNSIGNED NOT NULL );
рдЕрдЧрд▓рд╛, рд╣рдорд╛рд░рд╛ рдкрд░рд┐рд╡рд╣рди рд╡рд░реНрдЧ рдмрдирд╛рдПрдБ:
class EmailQueueTransport extends Zend_Mail_Transport_Sendmail { public function _sendMail() { if ($this->parameters !== null && !is_string($this->parameters)) { throw new Zend_Mail_Transport_Exception('Parameters were set but are not a string'); } $db = Zend_Db_Table_Abstract::getDefaultAdapter(); $statement = $db->prepare(' INSERT email_queue SET recipients = :recipients, subject = :subject, message = :message, header = :header, parameters = :parameters, create_time = :create_time '); $result = $statement->execute(array( 'recipients' => $this->recipients, 'subject' => $this->_mail->getSubject(), 'message' => $this->body, 'header' => $this->header, 'parameters' => $this->parameters, 'create_time' => time() )); if (!$result) { throw new Zend_Mail_Transport_Exception( 'Failed to add a message in queue.'); } } }
рдпрд╣ рд╕рдм рдЬреЛ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ Zend_Mail рд╕реЗ рддреИрдпрд╛рд░ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рд╣реЗрдЬрддрд╛ рд╣реИред рдпрджрд┐ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдХреЛрдИ рд░рд┐рдХреЙрд░реНрдб рдмрдирд╛рдирд╛ рд╡рд┐рдлрд▓ рд░рд╣рд╛, рддреЛ Zend_Mail_Transport_Exception рдХреЛ рдлреЗрдВрдХрддрд╛ рд╣реИред
рдЦреИрд░, рдПрдХ рдлрд╛рдЗрд▓ рдЬреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИ, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдПрдХ рдЕрд▓рдЧ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реИ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдЬрдбрд╝ рдореЗрдВ:
<?php function set_log($message) { $message = date('H:i dmY ', time()) . $message . "\r\n"; $logFile = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'logs' . DIRECTORY_SEPARATOR . basename(__FILE__, '.php') . '.log'; error_log($message, 3, $logFile); } try { $config = include realpath(dirname(__FILE__) . '/../') . '/application/config/config.php';
рдХрддрд╛рд░ рдЙрдкрдпреЛрдЧ:
$mail = new Zend_Mail(); $mail->setFrom($from); $mail->addTo($to); $mail->setBodyHtml($body); $mail->setSubject($subject); $transport = new \EmailQueueTransport(); $mail->send($transport);
рддрджрдиреБрд╕рд╛рд░, рдпрджрд┐ рдЖрдкрдХреЛ рдореЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдХрддрд╛рд░ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ - рдкрд░рд┐рд╡рд╣рди рдкрд╛рд╕ рди рдХрд░реЗрдВ рдпрд╛ рдирд▓ рдкрд╛рд╕ рди рдХрд░реЗрдВред
PS рд╢рд╛рдпрдж рдХреЛрдИ рдЗрд╕реЗ Zend_Queue рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕рд╣реА рдорд╛рдирддрд╛ рд╣реИ, рдФрд░ рд╢рд╛рдпрдж рдпрд╣ рд╕рд╣реА рд╣реЛрдЧрд╛ред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдореЗрд░рд╛ рджрд╛рд╡рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╡рд┐рдзрд┐ рдПрдХрдорд╛рддреНрд░ рд╕рд╣реА рдирд┐рд░реНрдгрдп рд╣реИред рд╣рдореЗрд╢рд╛ рдХрдИ рд╕рдорд╛рдзрд╛рди рд╣реЛрддреЗ рд╣реИрдВ, рдореИрдВрдиреЗ рдЙрдирдореЗрдВ рд╕реЗ рд╕рд┐рд░реНрдл рдПрдХ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИред
PPS рд╡рд┐рд╢реЗрд╖ рдзрдиреНрдпрд╡рд╛рдж
marknn рдФрд░
рдЬреАрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП
рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдПред