php - 仅向电子邮件数组中的第一个值发送电子邮件
问题描述
我在仅向值数组中的第一个值发送电子邮件时遇到问题。请检查下面的代码并帮助我。
示例值
$类别= 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;
}
解决方案
问题是 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));
推荐阅读
- npm - 错误:EINVAL:无效参数,uv_pipe_open - apm 命令
- c++ - 如何推断模板中的数组类型?
- python - Django如何使用modelformset_factory添加初始值?
- php - 在前 30 天已满后,如何取消每月定期收费?
- php - 试图让这个查询在 Lumen 项目中工作
- python - 如何用 Python 同时记录鼠标和键盘的移动?
- azure-devops - 在 Bug 或 PBI 详细信息页面中显示发布和阶段
- flutter - 输入'未来
' 不是类型 'List 的子类型 ' 在类型转换中 - sql - 无法获取 Snowflake 目标表的 dbname、rolename、userid、上次访问日期、读/写访问权限
- javascript - 按下键时如何使输入自动添加文本?