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

关于使用Trello与WordPress实现服务请求完成后自动发邮件的可行性问询

完全可行!

这是非常常见的自动化工作流需求,用WordPress自带的钩子、Trello API加上一点自定义代码就能完美实现。我给你拆解下具体的实现步骤:

第一步:WordPress表单提交后自动创建Trello卡片

不管你用的是Gravity Forms、Contact Form 7还是其他表单插件,都可以通过表单提交钩子触发Trello卡片的创建:

  1. 先去Trello开发者平台获取你的API密钥和令牌,以及目标列表(比如「待处理」)的ID
  2. 在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的自定义接口来发送邮件:

  1. 在Trello开发者平台创建Webhook,指向你WordPress站点的自定义REST端点(比如https://your-site.com/wp-json/trello-webhooks/v1/card-resolved)
  2. 在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:36:09