如何用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
相关产品推荐
相关产品推荐

