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

如何通过SendGrid消息ID获取邮件正文?NodeJS实现方法咨询

关于通过SendGrid消息ID获取邮件正文的实现说明

首先明确:@sendgrid/mail包仅用于发送邮件,无法直接查询已发送邮件的内容。要通过SendGrid消息ID获取邮件正文,需要使用SendGrid官方的API客户端@sendgrid/client调用其REST API接口。

实现步骤

1. 安装依赖

首先安装官方API客户端包:

npm install @sendgrid/client

2. 配置API密钥并调用接口

使用你的SendGrid API密钥(需具备mail.read权限),调用GET /v3/messages/{message_id}接口来获取邮件详情,从中提取正文:

const sgClient = require('@sendgrid/client');
// 替换为你的SendGrid API密钥
sgClient.setApiKey('YOUR_SENDGRID_API_KEY');

// 目标消息ID
const targetMessageId = 'QpnPqIzvS-u9ZdGIyNrFOw.filterdrecv-59cb65cf6d-kpcxt-1-63FDCB99-11.0';

// 构造请求
const requestConfig = {
  url: `/v3/messages/${encodeURIComponent(targetMessageId)}`,
  method: 'GET',
};

// 发送请求并处理响应
sgClient.request(requestConfig)
  .then(([response, responseBody]) => {
    // 提取邮件正文(优先纯文本,其次HTML)
    const textContent = responseBody.content?.find(item => item.type === 'text/plain');
    const htmlContent = responseBody.content?.find(item => item.type === 'text/html');
    
    if (textContent) {
      console.log('纯文本正文:', textContent.value);
    } else if (htmlContent) {
      console.log('HTML正文:', htmlContent.value);
    } else {
      console.log('未找到有效邮件正文');
    }
  })
  .catch(error => {
    console.error('请求失败:', error.response?.body || error.message);
  });

关键注意事项

  • 确保你的SendGrid API密钥拥有mail.read权限,否则会返回权限错误。
  • SendGrid会保留已发送邮件的信息一段时间,若邮件已被清理,接口将无法返回内容。
  • 如果是接收外部邮件的场景(而非自己发送的邮件),可通过配置Inbound Parse Webhook,让SendGrid在收到邮件时主动将正文、消息ID等数据POST到你的服务端点,这种方式更适合实时获取接收邮件的内容。

内容的提问来源于stack exchange,提问作者Ravikiran M D

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 22:00:09