AgentSkillsCN

send-email

在通过SendGrid v3 Mail Send API发送简单的事务性邮件或通知时使用。

SKILL.md
--- frontmatter
name: send-email
description: Use when sending simple transactional emails or notifications via the SendGrid v3 Mail Send API.

Send Email with SendGrid

Overview

SendGrid provides a single Mail Send endpoint for sending email via the v3 API. The Node SDK (@sendgrid/mail) is the recommended integration for JavaScript/TypeScript.

Use this skill when:

  • Sending transactional emails (welcome, password reset, receipts)
  • Sending simple notifications
  • You need basic text/HTML emails with optional attachments

Quick Start

  1. Detect project language (package.json, requirements.txt, go.mod, etc.)
  2. Install SDK (preferred) or use cURL - See references/installation.md
  3. Prepare message with from, to, subject, and text or html
  4. Send and handle errors (retry on 429/5xx)

Required Parameters

ParameterTypeDescription
fromstringSender email (must be verified)
tostring or string[]Recipient email(s)
subjectstringEmail subject
text or htmlstringEmail body content

Optional Parameters

ParameterTypeDescription
ccstring or string[]CC recipients
bccstring or string[]BCC recipients
reply_tostringReply-to address
attachmentsarrayBase64-encoded attachments
template_idstringDynamic template ID (if using templates)
dynamic_template_dataobjectTemplate data (if using templates)

Minimal Example (Node.js)

ts
import sgMail from '@sendgrid/mail';

sgMail.setApiKey(process.env.SENDGRID_API_KEY!);

await sgMail.send({
  from: 'Support <support@winkintel.com>',
  to: 'vince@winkintel.com',
  subject: 'Hello from SendGrid',
  text: 'This is a test email.',
  html: '<p>This is a test email.</p>',
});

Templates (Dynamic Templates)

If using SendGrid Dynamic Templates, supply template_id and dynamic_template_data instead of html/text.

ts
await sgMail.send({
  from: 'Support <support@winkintel.com>',
  to: 'vince@winkintel.com',
  templateId: 'd-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  dynamicTemplateData: { first_name: 'Vince' },
});

Best Practices (Short)

  • Always set both text and html when possible (deliverability + accessibility).
  • Retry only on 429 or 5xx errors with exponential backoff.
  • Use verified senders; unverified domains will fail.
  • Avoid fake addresses at real providers; test with addresses you control.

For deeper details, see: