/** * Hook for action 'phpmailer_init' * See: wp_mail() function. * * @param object $phpmailer Class PHPMailer. * @author peshkov@UD * @version 1.0 */ static function phpmailer_init($phpmailer) { global $_crm_notification; $_crm_notification = wp_parse_args($_crm_notification, array('reply_to_mail' => '', 'reply_to_name' => '', 'from' => '', 'from_name' => '', 'bcc' => '')); //** Do nothing if $_crm_notification variable is not set */ if (empty($_crm_notification) || !is_array($_crm_notification)) { return null; } //** Add Reply-To */ if (!empty($_crm_notification['reply_to_mail'])) { $phpmailer->ClearReplyTos(); $phpmailer->AddReplyTo($_crm_notification['reply_to_mail'], $_crm_notification['reply_to_name']); } //** Add From */ if (!empty($_crm_notification['from'])) { //** In some cases ( legacy functionality ) 'from' string can be like: 'John <*****@*****.**>'. To prevent the errors we parse and fix it. peshkov@UD */ preg_match('/<(.*)?>/', $_crm_notification['from'], $matches); if (!empty($matches)) { $_crm_notification['from_name'] = !empty($_crm_notification['from_name']) ? $_crm_notification['from_name'] : trim(str_replace($matches[0], '', $_crm_notification['from'])); $_crm_notification['from'] = $matches[1]; } $phpmailer->SetFrom($_crm_notification['from'], $_crm_notification['from_name'], 1); } //** Add BCCs */ if (!empty($_crm_notification['bcc'])) { $phpmailer->ClearBCCs(); $bcc = explode(',', (string) $_crm_notification['bcc']); foreach ($bcc as $_bcc) { $_bcc = trim($_bcc); if (!empty($_bcc)) { $phpmailer->AddBCC($_bcc); } } } }
/** * @param object $mail * @param array $receivers */ protected function sendEmail($mail, array $receivers) { $config = KunenaFactory::getConfig(); $email_recipient_count = !empty($config->email_recipient_count) ? $config->email_recipient_count : 1; $email_recipient_privacy = !empty($config->email_recipient_privacy) ? $config->email_recipient_privacy : 'bcc'; // If we hide email addresses from other users, we need to add TO address to prevent email from becoming spam if ($email_recipient_count > 1 && $email_recipient_privacy == 'bcc' && !empty($config->email_visible_address) && JMailHelper::isEmailAddress ( $config->email_visible_address )) { $mail->AddAddress($config->email_visible_address, JMailHelper::cleanAddress ( $config->board_title )); // Also make sure that email receiver limits are not violated (TO + CC + BCC = limit) if ($email_recipient_count > 9) $email_recipient_count--; } $chunks = array_chunk($receivers, $email_recipient_count); foreach ($chunks as $emails) { if ($email_recipient_count == 1 || $email_recipient_privacy == 'to') { $mail->ClearAddresses(); $mail->addRecipient($emails); } elseif ($email_recipient_privacy == 'cc') { $mail->ClearCCs(); $mail->addCC($emails); } else { $mail->ClearBCCs(); $mail->addBCC($emails); } $mail->Send(); } }