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

如何使用PHPMailer附加服务器路径下的多文件发送邮件

PHPMailer附加服务器本地多文件的实现方案

PHPMailer原生支持直接读取服务器本地路径的文件作为附件,不需要依赖实时上传的文件流,直接调用内置的addAttachment方法就能实现。

单文件附加写法

调用addAttachment时第一个参数传入文件在服务器上的存储路径即可,可选传入第二个参数自定义收件人看到的附件显示名称:

// 此处省略你原有的SMTP配置、发件人/收件人设置等初始化代码
// 直接传入服务器本地文件绝对路径附加附件
$mail->addAttachment('/home/www/storage/upload/activity_poster.jpg');
// 自定义附件显示名
$mail->addAttachment('/home/www/storage/upload/product_spec.pdf', '产品参数说明.pdf');

多文件批量附加写法

把所有需要附加的服务器文件路径整理为数组,循环调用addAttachment即可,建议增加文件可读性校验避免路径错误导致发送失败:

// 待附加的服务器本地文件路径列表
$fileList = [
    '/home/www/storage/upload/img_1.jpg',
    '/home/www/storage/upload/img_2.png',
    '/home/www/storage/upload/img_3.jpeg'
];

foreach ($fileList as $path) {
    if (file_exists($path) && is_readable($path)) {
        $mail->addAttachment($path);
    }
}

常见注意事项

  • 路径优先使用服务器绝对路径,不要传入图片的Web访问URL,否则会因为PHP运行权限、网络请求限制导致读取失败;如果使用相对路径,请确认当前PHP脚本的工作目录和文件存储目录的相对关系正确
  • 如果需要把图片嵌入邮件正文而非作为独立附件,可使用addEmbeddedImage方法,传入本地路径和自定义内容ID,正文内通过<img src="cid:自定义内容ID">的格式引用即可
  • 该方法和实时上传文件场景的唯一区别是:实时上传时你传入的是$_FILES['xxx']['tmp_name']的临时文件路径,本地存储文件场景传入的是文件在服务器上的固定存储路径,不需要额外做文件流读取、上传接收的处理,PHPMailer会自动完成文件加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 03:15:47