selectDb ('vn2008'); $db->query ('START TRANSACTION'); $mailer = new Vn\Web\Mailer ($db); $res = $db->query ( 'SELECT * FROM mail WHERE sent = 0 ORDER BY DATE_ODBC DESC LIMIT 20 FOR UPDATE'); $count = 0; while ($row = $res->fetch_object ()) { $sent = 1; $status = 'OK'; try { $mail = $mailer->createObject ($row->to, $row->text, $row->subject); $mail->AddReplyTo ($row->reply_to, $row->reply_to); if (!empty ($row->path)) { $attachment = '/mnt/cluster/pdfs/'. $row->path; if (file_exists ($attachment)) $mail->AddAttachment ($attachment, ''); else throw new Exception ("Attachment file could not be found: $attachment"); } if (!$mail->Send ()) throw new Exception ('Send error: '.$mail->ErrorInfo); $count++; } catch (Exception $e) { $sent = 2; $status = $e->getMessage (); } $db->query ('UPDATE mail SET sent = #, error = # WHERE id = #', [$sent, $status, $row->id]); } $db->query ('COMMIT'); echo "Total $count mails sent\n"; } }