表单测试技能Skill form-testing

WordPress网站表单测试工具,用于验证表单提交、电子邮件投递和SMTP配置。

测试 0 次安装 0 次浏览 更新于 3/3/2026

表单测试技能

WordPress网站综合表单测试 - 验证表单提交、电子邮件投递和SMTP配置。

快速开始

# 测试WP Mail SMTP配置
/root/.claude/skills/form-testing/scripts/test-mail.sh wordpress-container

# 测试联系表单提交
/root/.claude/skills/form-testing/scripts/test-form.sh https://site.com/contact/

# 全表单审计
/root/.claude/skills/form-testing/scripts/audit-forms.sh wordpress-container

这个技能测试什么

1. 电子邮件投递

  • WP Mail SMTP插件配置
  • 通过wp_mail()发送电子邮件的能力
  • SMTP服务器连接性
  • 电子邮件头和格式化

2. 联系表单功能

  • 表单字段验证
  • 随机数验证
  • 成功/错误重定向
  • 电子邮件收据

3. 表单安全

  • CSRF保护(随机数)
  • 输入清理
  • 垃圾邮件保护(如适用)

测试方法

方法1: WP-CLI电子邮件测试

测试电子邮件投递的最可靠方式:

# 通过WP-CLI发送测试电子邮件
docker exec wordpress-container wp eval '
$to = "test@example.com";
$subject = "WordPress测试电子邮件";
$message = "这是来自WordPress的测试电子邮件" . date("Y-m-d H:i:s");
$headers = array("Content-Type: text/plain; charset=UTF-8");

$result = wp_mail($to, $subject, $message, $headers);

if ($result) {
    echo "SUCCESS: Email sent to $to
";
} else {
    echo "FAILED: Could not send email
";
    global $phpmailer;
    if (isset($phpmailer)) {
        echo "Error: " . $phpmailer->ErrorInfo . "
";
    }
}
'

方法2: 检查SMTP配置

# 检查WP Mail SMTP选项
docker exec wordpress-container wp option get wp_mail_smtp --format=json | jq

# 检查SMTP是否配置
docker exec wordpress-container wp eval '
$options = get_option("wp_mail_smtp");
if (!empty($options["smtp"]["host"])) {
    echo "SMTP Host: " . $options["smtp"]["host"] . "
";
    echo "SMTP Port: " . $options["smtp"]["port"] . "
";
    echo "SMTP Auth: " . ($options["smtp"]["auth"] ? "Yes" : "No") . "
";
    echo "Encryption: " . $options["smtp"]["encryption"] . "
";
} else {
    echo "SMTP not configured - using PHP mail()
";
}
'

方法3: HTTP表单提交测试

# 通过curl测试联系表单
curl -X POST "https://site.com/contact/" \
  -d "first_name=Test" \
  -d "last_name=User" \
  -d "email=test@example.com" \
  -d "message=This is a test submission" \
  -d "csr_contact_form=1" \
  -L -v 2>&1 | grep -E "(< HTTP|Location:|contact=)"

自动化测试脚本

test-mail.sh

#!/bin/bash
# 通过WordPress测试电子邮件发送

CONTAINER="${1:-wordpress}"
TO_EMAIL="${2:-admin@example.com}"

echo "Testing email delivery..."

docker exec "$CONTAINER" wp eval "
\$to = '$TO_EMAIL';
\$subject = 'Form Test - ' . date('Y-m-d H:i:s');
\$message = 'This is an automated test from the form-testing skill.\
\
';
\$message .= 'Site: ' . home_url() . '\
';
\$message .= 'Time: ' . current_time('mysql') . '\
';
\$message .= '\
If you receive this, email delivery is working!';

\$headers = array(
    'Content-Type: text/plain; charset=UTF-8',
    'From: WordPress <wordpress@' . parse_url(home_url(), PHP_URL_HOST) . '>'
);

echo 'Sending test email to: ' . \$to . \"\
\";
\$result = wp_mail(\$to, \$subject, \$message, \$headers);

if (\$result) {
    echo \"SUCCESS: Test email sent!\
\";
    echo \"Check inbox for: \$subject\
\";
} else {
    echo \"FAILED: Could not send email\
\";
    global \$phpmailer;
    if (isset(\$phpmailer) && !empty(\$phpmailer->ErrorInfo)) {
        echo \"PHPMailer Error: \" . \$phpmailer->ErrorInfo . \"\
\";
    }
}
"

故障排除

电子邮件未发送

  1. 检查WP Mail SMTP是否激活:

    docker exec wordpress wp plugin is-active wp-mail-smtp && echo "Active" || echo "Not active"
    
  2. 验证SMTP设置:

    docker exec wordpress wp option get wp_mail_smtp --format=json
    
  3. 使用调试日志进行测试:

    docker exec wordpress wp eval '
    define("WP_DEBUG", true);
    define("WP_DEBUG_LOG", true);
    wp_mail("test@example.com", "Debug Test", "Testing");
    '
    
  4. 检查电子邮件日志(如果使用WP Mail SMTP Pro):

    docker exec wordpress wp db query "SELECT * FROM wp_wpmailsmtp_logs ORDER BY id DESC LIMIT 5"
    

表单提交错误

  1. 检查随机数验证:

    • 确保表单有wp_nonce_field()
    • 验证处理程序中的随机数名称匹配
  2. 检查提交后的重定向:

    curl -X POST "https://site.com/contact/" \
      -d "form_data=here" \
      -L -w "%{redirect_url}" -o /dev/null -s
    
  3. 检查PHP错误:

    docker exec wordpress tail -50 /var/www/html/wp-content/debug.log
    

常见问题

问题 原因 解决方案
电子邮件进入垃圾邮件 缺少SPF/DKIM 配置DNS记录
“无法实例化邮件功能” PHP邮件被禁用 使用SMTP插件
表单返回空白页面 PHP错误 启用WP_DEBUG
随机数验证失败 会话过期或缓存 检查缓存插件
表单字段未收到 缺少名称属性 添加名称到输入

WP Mail SMTP配置

推荐提供商

  1. SMTP.com - 免费层,可靠
  2. SendGrid - 每天100封电子邮件免费
  3. Mailgun - 开发者友好
  4. Amazon SES - 体积最便宜
  5. Gmail SMTP - 快速设置(个人使用)

通过WP-CLI配置

# 设置SMTP配置
docker exec wordpress wp option update wp_mail_smtp '{
  "mail": {
    "from_email": "noreply@yoursite.com",
    "from_name": "Your Site",
    "mailer": "smtp"
  },
  "smtp": {
    "host": "smtp.example.com",
    "port": 587,
    "encryption": "tls",
    "auth": true,
    "user": "smtp-user",
    "pass": "smtp-password"
  }
}' --format=json

测试表单类型

联系表单(CSR主题)

  • 模板: page-contact.php
  • 处理程序: csr_handle_contact_form()在functions.php中
  • 字段: first_name, last_name, email, message
  • 随机数: csr_contact_nonce
  • 成功重定向: ?contact=success

物业查询表单(CSR主题)

  • 模板: single-property.php
  • 处理程序: csr_handle_inquiry_form()在functions.php中
  • 字段: name, company, email, message, property_title
  • 随机数: csr_inquiry_nonce
  • 成功重定向: ?inquiry=success

审计报告模板

运行表单审计时,记录:

## 表单审计报告 - [网站名称]
**日期**: YYYY-MM-DD
**审计员**: Claude

### 电子邮件投递
- [ ] WP Mail SMTP已安装并激活
- [ ] SMTP凭据配置
- [ ] 测试电子邮件成功接收
- [ ] SPF/DKIM记录到位(通过MXToolbox检查)

### 联系表单
- [ ] 表单正确显示
- [ ] 所有字段正确验证
- [ ] 随机数验证工作
- [ ] 提交后显示成功消息
- [ ] 管理员收到电子邮件
- [ ] 回复至标题设置正确

### 安全
- [ ] CSRF保护(随机数)到位
- [ ] 输入清理(sanitize_text_field等)
- [ ] 电子邮件标题注入防护
- [ ] 速率限制(如需要)

### 建议
1. ...
2. ...

相关技能

  • wp-docker: WordPress容器管理
  • visual-qa: 表单更改后的视觉测试
  • seo-optimizer: 检查表单页面的SEO
  • white-label: 表单通知的管理员品牌化

来源