Contact Form 7如何通过钩子获取模板与数据合并后的最终发送HTML邮件内容
你可以使用Contact Form 7内置的模板替换方法,结合wpcf7_before_send_mail钩子直接获取模板和提交数据合并后的完整邮件内容,无需自己手动匹配替换短码:
add_action( 'wpcf7_before_send_mail', 'get_cf7_compiled_email_content', 10, 3 ); function get_cf7_compiled_email_content( $contact_form, $abort, $submission ) { // 取后台配置的邮件模板 $mail_config = $contact_form->prop( 'mail' ); // 调用CF7原生方法替换所有模板标签,得到最终发送的完整内容 $final_email_html = wpcf7_mail_replace_tags( $mail_config['body'], [ 'submission' => $submission, 'html' => true // 和后台邮件设置的「使用HTML内容类型」开关保持一致即可 ] ); // $final_email_html就是你需要的合并完成的完整邮件内容,可自行后续处理 // 调试示例:输出到站点错误日志查看 error_log( print_r( $final_email_html, true ) ); }
补充说明
wpcf7_mail_replace_tags是CF7官方原生的标签替换函数,和实际发信时的处理逻辑完全一致,会自动适配所有自定义字段、系统特殊标签(如提交时间、访客IP、表单ID等),不会出现变量遗漏、格式不匹配的问题。- 如果需要获取发送给提交用户的自动回复邮件内容,只需将
$contact_form->prop( 'mail' )改为$contact_form->prop( 'mail_2' )即可。
内容的提问来源于stack exchange,提问作者Miro
相关产品推荐
相关产品推荐

