public static function sendMail($to, $subject, $message, $skipblacklistcheck = 0) { if (Config::TEST) { return 1; } # do a quick check on mail injection attempt, @@@ needs more work if (preg_match("/\n/", $to)) { //TODO: convert to new logger phpList::log()->notice('Error: invalid recipient, containing newlines, email blocked'); return 0; } if (preg_match("/\n/", $subject)) { phpList::log()->notice('Error: invalid subject, containing newlines, email blocked'); return 0; } if (!$to) { phpList::log()->notice("Error: empty To: in message with subject {$subject} to send"); return 0; } elseif (!$subject) { phpList::log()->notice("Error: empty Subject: in message to send to {$to}"); return 0; } if (!$skipblacklistcheck && Util::isEmailBlacklisted($to)) { phpList::log()->notice("Error, {$to} is blacklisted, not sending"); Util::blacklistSubscriberByEmail($to); Subscriber::addHistory('Marked Blacklisted', 'Found subscriber in blacklist while trying to send an email, marked black listed', Subscriber::getSubscriberByEmailAddress($to)->id); return 0; } return phpListMailer::sendMailPhpMailer($to, $subject, $message); }
/** * Porcess the bounce data and update the database * @param Bounce $bounce * @param int $campaign_id * @param Subscriber $subscriber * @return bool */ private function processBounceData($bounce, $campaign_id, $subscriber) { if ($campaign_id === 'systemmessage' && $subscriber !== false) { $bounce->status = 'bounced system message'; $bounce->comment = sprintf('%s marked unconfirmed', $subscriber->id); $bounce->update(); phpList::log()->notice($subscriber->id . ' ' . s('system message bounced, subscriber marked unconfirmed')); $subscriber->addHistory(s('Bounced system message'), sprintf('<br/>%s<br/><a href="./?page=bounce&id=%d">%s</a>', s('Subscriber marked unconfirmed'), $bounce->id, s('View Bounce')), $subscriber->id); $subscriber->confirmed = 0; $subscriber->update(); } elseif (!empty($campaign_id) && $subscriber !== false) { $bounce->connectMeToSubscriberAndMessage($subscriber, $campaign_id); } elseif ($subscriber !== false) { $bounce->status = 'bounced unidentified message'; $bounce->comment = $subscriber->id . ' bouncecount increased'; $bounce->update(); $subscriber->bouncecount++; $subscriber->update(); } elseif ($campaign_id === 'systemmessage') { $bounce->status = 'bounced system message'; $bounce->comment = 'unknown subscriber'; $bounce->update(); phpList::log()->notice($subscriber->id . ' ' . s('system message bounced, but unknown subscriber')); } elseif ($campaign_id) { $bounce->status = sprintf('bounced list message %d', $campaign_id); $bounce->comment = 'unknown subscriber'; $bounce->update(); phpList::DB()->query(sprintf('UPDATE %s SET bouncecount = bouncecount + 1 WHERE id = %d', Config::getTableName('message'), $campaign_id)); } else { $bounce->status = 'unidentified bounce'; $bounce->comment = 'not processed'; $bounce->update(); return false; } return true; }