You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PHP配置文件与PHPMailer实现向多个邮箱地址发送邮件

问题原因

PHPMailer的addAddress、addCC、addBCC方法一次仅支持传入单个邮箱地址,直接传入逗号分隔的多地址字符串会被识别为一个无效地址,触发报错。

修改方案

你只需要修改发送逻辑中的收件人处理部分即可,修改后完全兼容原有配置写法,客户仅需在config.php中调整邮箱配置,无需改动逻辑文件:

1. 发送逻辑代码修改

将原有收件人相关代码替换为如下内容:

//Recipients
$mail->setFrom($config['from'], $config['fromName']);

// 处理多收件人,兼容逗号分隔字符串、数组两种配置格式,同时兼容旧版单地址配置
$sendToList = is_array($config['sendTo']) ? $config['sendTo'] : explode(',', $config['sendTo']);
foreach ($sendToList as $toAddress) {
    $toAddress = trim($toAddress);
    if (!empty($toAddress)) {
        $mail->addAddress($toAddress);
    }
}

// 同步处理抄送多地址兼容
$sendCCList = is_array($config['sendToCC']) ? $config['sendToCC'] : explode(',', $config['sendToCC']);
foreach ($sendCCList as $ccAddress) {
    $ccAddress = trim($ccAddress);
    if (!empty($ccAddress)) {
        $mail->addCC($ccAddress);
    }
}

// 同步处理密送多地址兼容
$sendBCCList = is_array($config['sendToBCC']) ? $config['sendToBCC'] : explode(',', $config['sendToBCC']);
foreach ($sendBCCList as $bccAddress) {
    $bccAddress = trim($bccAddress);
    if (!empty($bccAddress)) {
        $mail->addBCC($bccAddress);
    }
}

$mail->addAddress($_POST['email']);

2. config.php配置规则

客户修改配置时遵循以下规则即可,原有单地址配置无需任何改动:

  • 单收件人:和原有写法完全一致 "sendTo" => "abc@email.com",
  • 多收件人:用英文逗号分隔多个邮箱即可,地址前后带空格也可正常识别 "sendTo" => "abc@email.com, efg@email.com, hik@email.com",
  • 也可直接配置为数组格式 "sendTo" => ["abc@email.com", "efg@email.com", "hik@email.com"],

注意事项

多邮箱分隔请使用英文逗号,避免使用中文逗号、分号等其他分隔符,否则会导致地址识别错误。

内容的提问来源于stack exchange,提问作者atsngr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 15:15:01