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

如何在GeneXus X Ev3 UPG15中集成Twilio SendGrid API?求代码示例

在GeneXus X Ev3 UPG15(C# Web)中调用SendGrid API发送邮件的代码示例

核心实现思路

利用GeneXus支持嵌入C#代码的特性,直接调用.NET的HttpClient发送符合SendGrid V3 API规范的POST请求——这和你用SOAP/REST Client验证的请求逻辑完全一致,适配GeneXus该版本的Web端运行环境。

步骤1:创建GeneXus程序对象

新建一个Procedure(命名为SendGridSendEmail),添加以下参数:

  • 输入参数:
    • ApiKey(VarChar,长度200):你的SendGrid API密钥
    • FromEmail(VarChar,长度100):发件人邮箱
    • FromName(VarChar,长度100):发件人名称
    • ToEmail(VarChar,长度100):收件人邮箱
    • ToName(VarChar,长度100):收件人名称
    • Subject(VarChar,长度200):邮件主题
    • HtmlContent(VarChar,长度4000):邮件HTML内容
  • 输出参数:
    • Success(Boolean):是否发送成功
    • ResponseMessage(VarChar,长度500):响应信息(成功/失败详情)

步骤2:写入C#执行代码

在Procedure的Main事件中,嵌入以下C#代码:

// 构建SendGrid API要求的JSON请求体,自动转义双引号避免格式错误
string jsonPayload = @"
{
  ""personalizations"": [
    {
      ""to"": [
        {
          ""email"": """ + &ToEmail + @""",
          ""name"": """ + &ToName + @"""
        }
      ]
    }
  ],
  ""from"": {
    ""email"": """ + &FromEmail + @""",
    ""name"": """ + &FromName + @"""
  },
  ""subject"": """ + &Subject + @""",
  ""content"": [
    {
      ""type"": ""text/html"",
      ""value"": """ + &HtmlContent.Replace("\"", "\\\"") + @"""
    }
  ]
}";

// 初始化HTTP客户端
using (System.Net.Http.HttpClient httpClient = new System.Net.Http.HttpClient())
{
    // 添加SendGrid授权头
    httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + &ApiKey);
    
    // 构造请求内容(指定UTF-8编码与JSON格式)
    System.Net.Http.StringContent requestContent = new System.Net.Http.StringContent(
        jsonPayload, 
        System.Text.Encoding.UTF8, 
        "application/json"
    );
    
    // 发送POST请求(同步调用适配GeneXus该版本的Web端事件模型)
    System.Net.Http.HttpResponseMessage response = httpClient.PostAsync(
        "https://api.sendgrid.com/v3/mail/send", 
        requestContent
    ).Result;
    
    // 解析响应结果
    if (response.IsSuccessStatusCode)
    {
        &Success = true;
        &ResponseMessage = "邮件发送成功";
    }
    else
    {
        &Success = false;
        // 获取失败详情用于调试
        string errorDetails = response.Content.ReadAsStringAsync().Result;
        &ResponseMessage = $"发送失败,状态码:{response.StatusCode},详情:{errorDetails}";
    }
}

关键注意事项

  • 确保项目已引用System.Net.Http程序集:GeneXus X Ev3 UPG15的C# Web项目默认已包含,若缺失可在项目属性的References中添加。
  • 避免硬编码API密钥:建议通过GeneXus环境变量或配置文件读取,例如替换&ApiKey为System.Environment.GetEnvironmentVariable("SENDGRID_API_KEY")。
  • 特殊字符处理:代码中已对HTML内容的双引号做转义,若包含其他特殊字符(如换行符),可根据需求补充转义逻辑。
  • 网络权限:确认部署服务器可访问api.sendgrid.com:443端口(你已通过第三方工具验证,此步骤可快速跳过)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 21:05:17