Отправка электронной почты только на первое значение из массива электронной почты - PullRequest
0 голосов
/ 29 ноября 2018

У меня проблема с отправкой электронной почты только на первое значение из массива значений.Пожалуйста, проверьте приведенный ниже код и помогите мне.

Примеры значений

$ categoryoria = 12;

значения подписки из базы данных:

12

30,12

11,24,12,30

27,11

     $subscriptors=get_result("SELECT email, subscription FROM {$TABLE_PREFIX}users WHERE subscription IS NOT NULL",true);
     if (count($subscriptors)>0)
      {
       $bcc=array();
       $ne=0;
       include(load_language("lang_usercp.php"));
       for ($i=0;$i<count($subscriptors);$i++)
        {
            if (in_array($categoria, explode(",",$subscriptors[$i]["subscription"])))
              {
               $bcc[]=$subscriptors[$i]["email"];
               $ne++;
               if ($ne>49)
                  send_mail($SITEEMAIL,$language["SUB_SUBJECT"],sprintf($language["SUB_EMAIL"],$filename, "$BASEURL/index.php?page=torrent-details&id=$hash","$BASEURL/download.php?id=$hash&f=" . urlencode($filename) . ".torrent"),false,array(),$bcc);
            }
        }
        send_mail($SITEEMAIL,$language["SUB_SUBJECT"],sprintf($language["SUB_EMAIL"],$filename, "$BASEURL/index.php?page=torrent-details&id=$hash","$BASEURL/download.php?id=$hash&f=" . urlencode($filename) . ".torrent"),false,array(),$bcc);
     }

Как я понимаю, $ bcc - это массив писем.Но функция send_mail только отправляет почту на первое значение массива.И эта проблема только на SMTP.

Функция Send_Mail следует

function send_mail($rec_email,$subject,$message, $IsHtml=false, $cc=array(), $bcc=array()) {
global $THIS_BASEPATH, $btit_settings;
 //   if (!method_exists('PHPMailer','IsMail'))
    include($THIS_BASEPATH.'/phpmailer/class.phpmailer.php');
$mail=new PHPMailer();

if ($btit_settings['mail_type']=='php') {
    $mail->IsMail();                                   # send via mail
    if (!empty($cc))
        $mail->AddCustomHeader('Cc: '.implode(',',$cc));
    if (!empty($bcc))
        $mail->AddCustomHeader('Bcc: '.implode(',',$bcc));
} else {
    $mail->IsSMTP();                                   # send via SMTP
    $mail->Host     = $btit_settings['smtp_server'];   # SMTP servers
    $mail->Port     = $btit_settings['smtp_port'];     # SMTP port
    $mail->SMTPAuth = true;                            # turn on SMTP authentication
    $mail->Username = $btit_settings['smtp_username']; # SMTP username
    $mail->Password = $btit_settings['smtp_password']; # SMTP password
    if (!empty($cc))
        foreach($cc as $carbon_copy)
            $mail->AddCC($carbon_copy[0],$carbon_copy[0]);

    if (!empty($bcc))
        foreach($bcc as $blind_carbon_copy)
            $mail->AddBCC($blind_carbon_copy[0],$blind_carbon_copy[0]);
}

$mail->From     = $btit_settings['email'];
$mail->FromName = $btit_settings['name'];
$mail->CharSet  = $btit_settings['default_charset'];
$mail->IsHTML($IsHtml);
$mail->AddAddress($rec_email);
$mail->AddReplyTo($btit_settings['email'],$btit_settings['name']);
$mail->Subject  =  $subject;
$mail->Body     =  $message;

return ($mail->Send())?true:$mail->ErrorInfo;
}

1 Ответ

0 голосов
/ 02 декабря 2018

Проблема была в AddBCC и AddCC.Оба не работали.

ниже строки заменены

foreach ($cc as $carbon_copy)
$mail->AddCC($carbon_copy, $carbon_copy);

foreach ($bcc as $blind_carbon_copy) {
$mail->AddBCC($blind_carbon_copy, $blind_carbon_copy);

на

 $mail->AddCustomHeader('Cc: '.implode(',',$cc));
 $mail->AddCustomHeader('Bcc: '.implode(',',$bcc));
...