测试企业微信邮箱通道配置¶
列出工作区已有的企业微信通道实例,再测试一组尚未保存的企业微信邮箱配置。测试不会创建通道实例。
准备¶
在终端设置邮箱地址和授权码。邮箱授权码与个人访问令牌是两种不同凭据:
export WECOM_MAIL_EMAIL='<完整企业微信邮箱地址>'
export WECOM_MAIL_PASSWORD='<该邮箱生成的客户端专用密码>'
读取实例并测试邮箱配置¶
将对应语言的代码保存为 Python 脚本或 Go 程序并运行。程序先列出当前页已有实例的 ID、名称、通道类型及最近测试状态,再提交邮箱地址和授权码进行连接测试。列表查询使用企业微信提供方,结果可能包含其他企业微信通道类型,不要求预先存在邮箱实例。
import os
import moi_product_sdk as sdk
def main():
client = sdk.new_with_personal_access_token(
os.environ["PRODUCT_API_BASE_URL"], os.environ["PRODUCT_API_KEY"]
)
service = client.workspace(os.environ["WORKSPACE_ID"]).agents()
instances = service.list_channel_instances("wecom")
print("实例总数:", instances.total)
for instance in instances.items:
print(instance.id, instance.name, instance.channel_type,
instance.last_test_status)
request = sdk.ChannelInstanceCreateRequest(
channel_type="wecom_mail",
config={"email": os.environ["WECOM_MAIL_EMAIL"], "timeout_seconds": "30"},
secrets={"password": os.environ["WECOM_MAIL_PASSWORD"]},
)
result = service.test_channel_configuration("wecom", request)
print("测试通过:", result.ok, "执行状态:", result.status)
print("最近测试状态:", result.last_test_status, "测试时间:", result.last_tested_at)
if not result.ok or result.last_test_status != "succeeded":
print("失败原因:", result.last_test_error)
print("错误代码:", result.error_code, "修复建议:", result.suggestion)
raise SystemExit(1)
print("邮箱连接测试通过;配置尚未保存。")
if __name__ == "__main__":
main()
package main
import (
"context"
"fmt"
"os"
sdk "github.com/matrixorigin/matrixflow/sdk/go-sdk"
)
func requiredEnv(name string) string {
value := os.Getenv(name)
if value == "" {
panic("请设置环境变量 " + name)
}
return value
}
func main() {
ctx := context.Background()
client, err := sdk.NewWithPersonalAccessToken(
requiredEnv("PRODUCT_API_BASE_URL"), requiredEnv("PRODUCT_API_KEY"),
)
if err != nil {
panic(err)
}
workspace, err := client.Workspace(requiredEnv("WORKSPACE_ID"))
if err != nil {
panic(err)
}
service := workspace.Agents()
instances, err := service.ListChannelInstances(ctx, "wecom")
if err != nil {
panic(err)
}
fmt.Println("实例总数:", instances.Total)
for _, instance := range instances.Items {
fmt.Println(instance.ID, instance.Name, instance.ChannelType, instance.LastTestStatus)
}
request := sdk.ChannelInstanceCreateRequest{
ChannelType: "wecom_mail",
Config: map[string]string{
"email": requiredEnv("WECOM_MAIL_EMAIL"), "timeout_seconds": "30",
},
Secrets: map[string]string{"password": requiredEnv("WECOM_MAIL_PASSWORD")},
}
result, err := service.TestChannelConfiguration(ctx, "wecom", request)
if err != nil {
panic(err)
}
fmt.Println("测试通过:", result.OK, "执行状态:", result.Status)
fmt.Println("最近测试状态:", result.LastTestStatus, "测试时间:", result.LastTestedAt)
if !result.OK || result.LastTestStatus != "succeeded" {
fmt.Println("失败原因:", result.LastTestError)
fmt.Println("错误代码:", result.ErrorCode, "修复建议:", result.Suggestion)
os.Exit(1)
}
fmt.Println("邮箱连接测试通过;配置尚未保存。")
}
查看测试结果¶
测试通过标记为真且最近测试状态为 succeeded 时,程序输出“邮箱连接测试通过;配置尚未保存”。失败时输出原因、错误代码和修复建议,并以非零状态退出。
本次结果与已保存实例列表中的最近测试状态分别读取。测试会访问外部邮箱服务;通过后可按创建邮箱实例保存配置,再绑定和验证收发。
最后更新于