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

如何用PHP正确添加多个收件人及抄送地址?

正确添加多个邮件收件人和抄送地址的PHP方法

1. 先确认邮件类的正确初始化

以常用的PHPMailer为例,必须先完成库的引入与对象初始化,否则后续方法调用必然报错:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

// 引入依赖文件,路径根据你的实际存放位置调整
require 'PHPMailer/src/Exception.php';
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/SMTP.php';

// 初始化对象,传入true启用异常处理便于排查错误
$email = new PHPMailer(true);

2. 添加多个收件人(To)的正确写法

你原本的addTo()多次调用逻辑是对的,但需要搭配完整的邮件配置流程:

try {
    // 配置SMTP参数(根据你的邮件服务商填写,以Outlook为例)
    $email->isSMTP();
    $email->Host = 'smtp.office365.com';
    $email->SMTPAuth = true;
    $email->Username = 'your-account@outlook.com';
    $email->Password = 'your-password';
    $email->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
    $email->Port = 587;

    // 设置发件人
    $email->setFrom('sender@example.com', '发件人姓名');

    // 批量添加收件人
    $email->addTo("email1@hotmail.com", "name1");
    $email->addTo("email2@hotmail.com", "name2");

    // 设置邮件内容
    $email->Subject = '测试邮件';
    $email->Body = '这是一封包含多个收件人的测试邮件';

    $email->send();
    echo '邮件发送成功';
} catch (Exception $e) {
    echo "发送失败: {$email->ErrorInfo}";
}

3. 添加多个抄送(Cc)的正确写法

只需在收件人添加完成后,多次调用addCc()即可,逻辑和addTo()一致:

// 接上面的代码,在addTo之后添加
$email->addCc("email3@hotmail.com", "name3");
$email->addCc("email4@hotmail.com", "name4");

常见错误排查

  • 依赖文件路径错误:确保PHPMailer的三个核心文件路径正确,无遗漏
  • SMTP参数不匹配:不同服务商的SMTP地址、端口、加密方式不同(比如Gmail用smtp.gmail.com,端口465)
  • 方法顺序错误:必须先初始化对象、配置SMTP、设置发件人,再添加收件人/抄送
  • 邮箱格式非法:检查所有收件人/抄送地址是否符合xxx@xxx.xxx格式

如果使用SwiftMailer等其他邮件库,逻辑类似:

// SwiftMailer批量添加示例
$transport = (new Swift_SmtpTransport('smtp.example.com', 465, 'ssl'))
  ->setUsername('your-email@example.com')
  ->setPassword('your-password');

$mailer = new Swift_Mailer($transport);

$message = (new Swift_Message('测试邮件'))
  ->setFrom(['sender@example.com' => '发件人姓名'])
  // 一次性传入数组添加多个收件人
  ->setTo([
      'email1@hotmail.com' => 'name1',
      'email2@hotmail.com' => 'name2'
  ])
  // 一次性传入数组添加多个抄送
  ->setCc([
      'email3@hotmail.com' => 'name3',
      'email4@hotmail.com' => 'name4'
  ])
  ->setBody('这是一封测试邮件');

$mailer->send($message);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 08:55:12