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

如何通过批处理(脚本)任务调用GxFlow模板创建邮件发送程序?

问题解答

能否通过调用GxFlow通知模板的邮件发送服务实现需求?

可以。GxFlow的通知服务支持直接调用已配置的通知模板发送邮件,并且可以通过参数控制不在GxFlow Client收件箱生成用户任务,完全匹配你的需求。

.NET环境下的代码示例(Genexus 18 U8)

以下是调用GxFlow通知服务发送邮件提醒的示例代码,核心是通过CreateTask参数控制不生成用户任务:

using GeneXus.Workflow;
using GeneXus.Workflow.Notifications;

public void SendApprovalReminder(string approvalTaskId, string approverUserId)
{
    // 获取待办任务数据,用于填充模板变量
    WorkflowTask task = WorkflowTask.GetById(approvalTaskId);
    if (task == null) return;

    // 初始化通知管理器
    WorkflowNotificationManager notificationManager = new WorkflowNotificationManager();
    
    // 指定要复用的首次通知模板名称
    string templateName = "ApprovalRequestInitialNotification";
    
    // 设置通知参数:关键配置为不生成用户任务
    NotificationParameters parameters = new NotificationParameters();
    parameters.CreateTask = false; // 禁止在GxFlow Client生成新任务
    parameters.Recipients.Add(approverUserId);
    // 填充模板变量,需与模板中的变量名对应
    parameters.Context.Add("TaskSubject", task.Subject);
    parameters.Context.Add("TaskDescription", task.Description);
    parameters.Context.Add("TaskHandleUrl", $"https://your-app-domain/gxflow/task/{approvalTaskId}");

    // 发送邮件提醒
    try
    {
        notificationManager.SendNotification(templateName, parameters);
    }
    catch (Exception ex)
    {
        GeneXus.ErrorManager.Publish(ex);
    }
}

代码说明:

  • templateName替换为你在GxFlow中配置的首次通知模板名称
  • parameters.CreateTask = false是核心配置,确保不会在用户收件箱生成任务
  • Context字典用于填充模板中的动态变量,需和模板里的变量名保持一致

替代方案

1. 直接用Genexus邮件API复用模板内容

不依赖GxFlow通知服务,直接读取GxFlow数据库中的通知模板内容,再用Genexus自带的SMTPClient发送邮件:

using GeneXus.Mail;

public void SendReminderViaSMTP(string templateContent, string approverEmail, string taskSubject, string taskUrl)
{
    // 替换模板中的变量占位符
    string emailBody = templateContent.Replace("[TaskSubject]", taskSubject)
                                      .Replace("[TaskHandleUrl]", taskUrl);

    SMTPClient client = new SMTPClient();
    client.From = "noreply@your-domain.com";
    client.To.Add(approverEmail);
    client.Subject = $"提醒:待处理审批请求 - {taskSubject}";
    client.Body = emailBody;
    client.IsBodyHtml = true; // 若模板为HTML格式则开启

    client.Send();
}

2. 配置GxFlow内置定时提醒规则

在GxFlow管理控制台中,针对审批任务配置定时提醒规则,设置提醒间隔(如每日一次),并勾选“仅发送邮件,不生成新任务”选项。无需编写代码,纯配置实现需求。

3. 自定义批处理脚本调用SMTP服务

编写独立的.NET控制台程序作为批处理任务,直接连接GxFlow数据库查询待办审批任务,读取审批人邮箱,复用现有邮件模板内容,通过SMTP协议发送提醒邮件。适合需要完全自定义业务逻辑的场景。


内容的提问来源于stack exchange,提问作者CarlosR

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 00:47:20