Exemple #1
0
 /**
  * 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);
             }
         }
     }
 }
Exemple #2
0
	/**
	 * @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();
		}
	}