关于使用Trello与WordPress实现服务请求完成后自动发邮件的可行性问询
完全可行!
这是非常常见的自动化工作流需求,用WordPress自带的钩子、Trello API加上一点自定义代码就能完美实现。我给你拆解下具体的实现步骤:
第一步:WordPress表单提交后自动创建Trello卡片
不管你用的是Gravity Forms、Contact Form 7还是其他表单插件,都可以通过表单提交钩子触发Trello卡片的创建:
- 先去Trello开发者平台获取你的API密钥和令牌,以及目标列表(比如「待处理」)的ID
- 在WordPress的
functions.php或者自定义插件里添加如下代码(以Gravity Forms为例,其他插件只需替换对应的钩子):
// 监听表单ID为1的提交事件(替换成你的表单ID) add_action('gform_after_submission_1', 'create_trello_card_from_form', 10, 2); function create_trello_card_from_form($entry, $form) { // 从WordPress选项中读取凭证(建议后台添加设置页面存储,不要硬编码) $trello_api_key = get_option('trello_api_key'); $trello_token = get_option('trello_token'); $pending_list_id = get_option('trello_pending_list_id'); // 整理卡片内容,这里的字段ID对应你表单里的字段(比如1是请求标题,2是邮箱,3是详情) $card_data = array( 'key' => $trello_api_key, 'token' => $trello_token, 'idList' => $pending_list_id, 'name' => '服务请求: ' . $entry['1'], 'desc' => "提交人邮箱: {$entry['2']}\n请求详情: {$entry['3']}" ); // 调用Trello API创建卡片 wp_remote_post('https://api.trello.com/1/cards', array( 'method' => 'POST', 'body' => $card_data )); }
第二步:卡片移至「已解决」列表时自动发送邮件
这一步需要用Trello的Webhook功能,当卡片被移动到「已解决」列表时,触发WordPress的自定义接口来发送邮件:
- 在Trello开发者平台创建Webhook,指向你WordPress站点的自定义REST端点(比如
https://your-site.com/wp-json/trello-webhooks/v1/card-resolved) - 在WordPress里添加自定义REST路由和处理逻辑:
// 注册自定义REST端点 add_action('rest_api_init', function() { register_rest_route('trello-webhooks/v1', '/card-resolved', array( 'methods' => 'POST', 'callback' => 'handle_trello_card_resolved', // 实际生产环境要添加验证,比如检查Trello的签名,防止恶意请求 'permission_callback' => function() { // 这里可以添加Trello签名验证逻辑 return true; } )); }); function handle_trello_card_resolved($request) { $card_action = $request->get_json_params(); $resolved_list_id = get_option('trello_resolved_list_id'); // 确认卡片确实被移到了「已解决」列表 if($card_action['action']['data']['listAfter']['id'] !== $resolved_list_id) { return new WP_REST_Response('不是已解决的卡片', 200); } // 从卡片描述中提取邮箱(正则表达式要匹配你之前设置的描述格式) $card_desc = $card_action['action']['data']['card']['desc']; preg_match('/提交人邮箱: (\S+@\S+\.\S+)/', $card_desc, $email_matches); if(empty($email_matches[1])) { return new WP_REST_Response('未找到提交人邮箱', 400); } $user_email = $email_matches[1]; // 发送预设模板的邮件 $subject = '您的服务请求已处理完成'; $message = <<<EOD 您好! 您提交的服务请求已经顺利完成,如有任何疑问,欢迎随时联系我们。 感谢您的支持! --- [你的公司名称] EOD; $headers = array('Content-Type: text/plain; charset=UTF-8'); // 用WordPress自带的邮件函数发送 wp_mail($user_email, $subject, $message, $headers); return new WP_REST_Response('邮件发送成功', 200); }
几个关键注意事项
- 安全优先:不要把API密钥、令牌硬编码到代码里,建议在WordPress后台添加一个自定义设置页面来存储这些敏感信息
- Webhook验证:生产环境一定要添加Trello签名验证,避免恶意请求触发邮件发送
- 邮件可靠性:建议安装WP Mail SMTP之类的插件配置SMTP服务,防止邮件被当成垃圾邮件拒收
- 表单适配:如果用的不是Gravity Forms,替换对应的表单提交钩子即可(比如Contact Form 7用
wpcf7_mail_sent)
内容的提问来源于stack exchange,提问作者Mike Grilli
相关产品推荐
相关产品推荐

