WordPress建站:如何将Gravity Forms表单以PDF附件发送邮件?
实现Gravity Forms提交后生成PDF并邮件附件发送的方法
方法一:使用专用插件(快速上手)
最省心的方式是借助Gravity Forms生态的PDF生成插件,比如Gravity Forms PDF Extended,操作步骤如下:
- 安装激活插件:在WordPress后台「插件-添加新插件」搜索该插件,完成安装后激活。
- 创建PDF模板:进入「Forms-Forms」找到目标表单,点击「PDFs」标签,选择「Add New」。可以直接用默认模板,也能通过HTML/CSS自定义PDF的样式布局。
- 关联邮件附件:在PDF编辑页的「Notification Attachments」选项里,勾选需要绑定的表单通知(比如管理员通知、用户确认邮件),这样表单提交时,PDF会自动作为附件加入对应邮件。
- 测试验证:手动提交一次表单,检查收件邮箱是否收到带PDF附件的邮件,同时确认PDF里的内容和表单提交数据一致。
方法二:自定义代码实现(灵活定制)
如果需要更个性化的PDF样式或特殊逻辑,可结合第三方PDF生成库(如TCPDF/FPDF)通过代码实现:
- 引入PDF库:将TCPDF或FPDF库上传到主题的
functions.php所在目录,或者用Composer安装(服务器支持的话)。 - 添加表单提交钩子:在主题的
functions.php中插入Gravity Forms的提交钩子代码,示例如下:
add_action('gform_after_submission', 'generate_pdf_and_attach', 10, 2); function generate_pdf_and_attach($entry, $form) { // 引入TCPDF库(根据实际路径调整) require_once(get_stylesheet_directory() . '/tcpdf/tcpdf.php'); // 初始化PDF对象 $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); $pdf->SetCreator(PDF_CREATOR); $pdf->SetTitle('表单提交记录'); // 添加PDF页面 $pdf->AddPage(); // 填充表单数据到PDF内容 $content = '<h1>表单提交详情</h1>'; foreach ($form['fields'] as $field) { $field_label = $field['label']; $field_value = rgar($entry, $field['id']); $content .= "<p><strong>{$field_label}:</strong> {$field_value}</p>"; } $pdf->writeHTML($content, true, false, true, false, ''); // 生成临时PDF文件到WordPress上传目录 $pdf_path = wp_upload_dir()['path'] . '/form-submission-' . $entry['id'] . '.pdf'; $pdf->Output($pdf_path, 'F'); // 替换为你的通知ID(可在表单编辑页「通知」中查看ID) $notification_id = '1'; // 给指定通知添加附件 add_filter('gform_notification_' . $form['id'] . '_' . $notification_id, function($notification, $form, $entry) use ($pdf_path) { $notification['attachments'][] = $pdf_path; return $notification; }, 10, 3); // 可选:邮件发送后删除临时PDF文件 add_action('gform_notification_sent', function($notification, $form, $entry) use ($pdf_path) { if (file_exists($pdf_path)) { unlink($pdf_path); } }, 10, 3); }
- 配置测试:替换代码中的通知ID和PDF库路径,保存
functions.php后提交表单,验证邮件附件和PDF内容是否正常。
注意事项
- 插件法要注意版本兼容性,确保和当前Gravity Forms版本匹配。
- 自定义代码法需要基础PHP知识,同时确认服务器支持PDF生成所需的PHP扩展(如GD库)。
内容的提问来源于stack exchange,提问作者ttupnpeace
相关产品推荐
相关产品推荐

