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

Google Apps Script无法通过POST向PHP页面发送PDF附件的问题

问题解决:Google Apps Script 向 PHP 接口传递 PDF 附件失败

问题根源

你当前的GAS代码直接将DriveFile对象放入POST payload中,UrlFetchApp无法自动将其转换为HTML表单上传文件时的multipart/form-data格式,导致PHP端无法通过$_POST获取到文件(文件上传数据实际存储在$_FILES全局变量中)。

解决方案步骤

1. 修改Google Apps Script代码

无需将PDF保存到Drive(可省略DriveApp.createFile步骤,直接使用Blob对象),同时正确构造包含文件的POST payload:

// 生成PDF Blob(无需存入Drive)
var token = ScriptApp.getOAuthToken();
var docurl = UrlFetchApp.fetch(url, { headers: { 'Authorization': 'Bearer ' +  token } });
var pdfBlob = docurl.getAs('application/pdf');
pdfBlob.setName("文档名称.pdf"); // 设置附件文件名

// 构造POST请求参数
var payload = {
    'RecipientEmail': ToUser,
    'RecipientLabel': ToUserName,
    'EmailSubject': MailSubject,
    'EmailBody': MailBody,
    'AttachedFile': pdfBlob // 直接传入Blob对象,UrlFetchApp会自动处理为multipart格式
};

var options = {
    'method': 'post',
    'payload': payload,
    'muteHttpExceptions': true // 可选,方便调试查看错误
};

var url = "http://XXX/phpmailer.php";
var response = UrlFetchApp.fetch(url, options).getContentText();
Logger.log(response); // 查看接口返回信息,辅助调试

2. 修改PHP端接收代码

文件上传数据存储在$_FILES中,而非$_POST,需调整参数接收逻辑:

// 接收普通文本参数
$RecipientEmail = $_POST['RecipientEmail'] ?? '';
$RecipientLabel = $_POST["RecipientLabel"] ?? '';
$EmailSubject = $_POST["EmailSubject"] ?? '';
$EmailBody = $_POST["EmailBody"] ?? '';

// 接收上传的文件
$AttachedFile = $_FILES['AttachedFile'] ?? null;

// 验证文件是否上传成功
if ($AttachedFile && $AttachedFile['error'] === UPLOAD_ERR_OK) {
    // 获取临时文件路径、文件名、MIME类型
    $tempFilePath = $AttachedFile['tmp_name'];
    $fileName = $AttachedFile['name'];
    $fileType = $AttachedFile['type'];
    
    // 后续用PHPMailer添加附件:
    // $mail->addAttachment($tempFilePath, $fileName);
} else {
    // 处理文件上传失败的情况
    echo "附件上传失败";
}

3. 关键说明

  • GAS中直接传入Blob对象到payload的文件字段,UrlFetchApp会自动设置正确的multipart/form-data请求头和文件格式,无需手动拼接。
  • PHP端必须通过$_FILES获取上传文件,$_POST仅用于接收普通文本参数。
  • 可选添加muteHttpExceptions: true并打印响应,方便排查接口返回的错误信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 23:45:28