if (!$batch_limit) {
    $batch_limit = 1;
}
$time_limit = 60 * 10;
// 10 minutes, should be lover than cron job
$start_time = time();
$pendingNewsletters = eZContentObjectTreeNode::subTreeByNodeID(array('Limit' => 10, 'ClassFilterType' => 'include', 'ClassFilterArray' => array('jaj_newsletter'), 'AttributeFilter' => array(array('jaj_newsletter/status', '=', 'in progress'))), $root_node_id);
foreach ($pendingNewsletters as $newsletter) {
    $cli->output('Delivering newsletter: ' . $newsletter->getName() . ' (ContentObjectID: ' . $newsletter->ContentObjectID . ')');
    $cli->output('Batch limit left: ' . $batch_limit);
    $object_id = $newsletter->ContentObjectID;
    $url_alias = $newsletter->urlAlias();
    $url_newsletter = "http://" . $site_url . "/" . $url_alias . "/(generate)/nl/(uuid)/";
    $data_map = $newsletter->DataMap();
    $subject = $data_map['subject']->toString();
    $deliveries = jajNewsletterDelivery::fetchDeliveriesByContentobjectIDAndState($object_id, 'pending', $batch_limit, 0, true);
    foreach ($deliveries as $delivery) {
        $batch_limit--;
        $cli->output('Generating newsletter for: ' . $delivery->attribute('email'));
        // Sanity check
        if ($delivery->attribute('sent') || $delivery->attribute('state') != 'pending') {
            $cli->output('Looks like this has been sent before. Bailing...');
            continue;
        }
        // Newsletter URL
        $url = $url_newsletter . $delivery->attribute('uuid');
        // Genereate HTML mail
        $cmd = "/usr/local/bin/premailer -r --mode html " . escapeshellarg($url) . " 2>&1";
        $return = exec($cmd, $output, $return_var);
        $html = implode("\n", $output);
        if ($return_var != 0) {