Добавление интеграции SendGrid
SendGrid — это облачный сервис для доставки транзакционных и маркетинговых электронных писем. Подключение этой интеграции позволяет вашему приложению программно отправлять электронные письма (например, приветственные письма, сброс паролей или уведомления).
Шаги настройки
Заголовок раздела «Шаги настройки»После выбора SendGrid из списка интеграций появится модальное окно настройки. Вы должны предоставить следующие учетные данные для установления соединения:
1. Ключ API
Заголовок раздела «1. Ключ API»Это токен аутентификации, сгенерированный в вашей учетной записи SendGrid.
- Ввод: Вставьте ваш приватный ключ API SendGrid в текстовое поле.
- Помощь: Если у вас нет ключа, нажмите на ссылку “Где найти ключ API?”, предоставленную в модальном окне, для получения инструкций по его генерации.
2. Окружение
Заголовок раздела «2. Окружение»Укажите контекст окружения для этой интеграции.
- Ввод: Введите идентификатор окружения (например,
Production,Stagingили конкретный тег конфигурации) в поле Окружение.
Завершение подключения
Заголовок раздела «Завершение подключения»После заполнения полей:
- Проверьте строку состояния (в настоящее время отображается Not Connected).
- Нажмите черную кнопку Add в правом нижнем углу, чтобы сохранить учетные данные и активировать интеграцию.


Справочник API интеграции SendGrid
Заголовок раздела «Справочник API интеграции SendGrid»Настройка SendGrid
Заголовок раздела «Настройка SendGrid»Настроить ключ API SendGrid
Заголовок раздела «Настроить ключ API SendGrid»Настраивает ключ API SendGrid для конкретного проекта и окружения.
Mutation:
mutation { sendgrid_configureSendGrid ( apiKey: "SG._api_key_here" )}Отправка электронной почты
Заголовок раздела «Отправка электронной почты»Отправить простое письмо
Заголовок раздела «Отправить простое письмо»Отправляет электронное письмо одному или нескольким получателям.
Mutation:
mutation sendgrid_sendEmail { sendgrid_sendEmail ( email: { from: { email: "sender@archie.com", name: "Sender Name" }, subject: "Test Email", to: { email: "recipient@gmail.com", name: "Recipient Name" }, content: { type: "text/html", value: "<h1>Hello World</h1><p>This is a test email.</p>" } } ) { messageId success }}Response:
{ "data": { "sendgrid_sendEmail": { "messageId": "sent-1234567890", "success": true } }}Отправить письмо с CC и BCC
Заголовок раздела «Отправить письмо с CC и BCC»Mutation:
mutation sendgrid_sendEmail { sendgrid_sendEmail ( email: { from: { email: "sender@example.com" name: "Sender Name" } to: [ { email: "recipient@example.com" name: "Recipient Name" } ] cc: [ { email: "cc@example.com" name: "CC Recipient" } ] bcc: [ { email: "bcc@example.com" } ] subject: "Email with CC and BCC" content: [ { type: "text/html" value: "<h1>Hello</h1><p>This email has CC and BCC recipients.</p>" } ] } ) { messageId success }}Отправить письмо с вложениями
Заголовок раздела «Отправить письмо с вложениями»Mutation:
mutation sendgrid_sendEmail { sendgrid_sendEmail( email: { from: { email: "sender@example.com" name: "Sender Name" } to: [ { email: "recipient@example.com" name: "Recipient Name" } ] subject: "Email with Attachment" content: [ { type: "text/html" value: "<h1>Hello</h1><p>Please find attached file.</p>" } ] attachments: [ { content: "SGVsbG8gV29ybGQ=" type: "text/plain" filename: "document.txt" disposition: "attachment" } ] } ) { messageId success }}Примечание: Поле content во вложениях должно быть закодировано в Base64.
Отправить письмо с категориями и тегами
Заголовок раздела «Отправить письмо с категориями и тегами»Mutation:
mutation sendgrid_sendEmail { sendgrid_sendEmail( email: { from: { email: "sender@example.com" name: "Sender Name" } to: [ { email: "recipient@example.com" name: "Recipient Name" } ] subject: "Categorized Email" content: [ { type: "text/html" value: "<h1>Hello</h1>" } ] categories: ["transactional", "notification"] tags: ["important", "urgent"] } ) { messageId success }}Отправить запланированное письмо
Заголовок раздела «Отправить запланированное письмо»Mutation:
mutation sendgrid_sendEmail { sendgrid_sendEmail( email: { from: { email: "sender@example.com" name: "Sender Name" } to: [ { email: "recipient@example.com" name: "Recipient Name" } ] subject: "Scheduled Email" content: [ { type: "text/html" value: "<h1>Hello</h1>" } ] sendAt: "2025-12-25T10:00:00Z" } ) { messageId success }}Отправить письмо с пользовательскими аргументами
Заголовок раздела «Отправить письмо с пользовательскими аргументами»Mutation:
mutation sendgrid_sendEmail { sendgrid_sendEmail( email: { from: { email: "sender@example.com" name: "Sender Name" } to: [ { email: "recipient@example.com" name: "Recipient Name" } ] subject: "Email with Custom Args" content: [ { type: "text/html" value: "<h1>Hello</h1>" } ] customArgs: { orderId: "12345" userId: "67890" campaignId: "abc123" } } ) { messageId success }}Массовая отправка писем
Заголовок раздела «Массовая отправка писем»Отправить несколько писем
Заголовок раздела «Отправить несколько писем»Mutation:
mutation sendgrid_sendBulkEmail { sendgrid_sendBulkEmail( emails: { emails: [ { from: { email: "sender@example.com" name: "Sender Name" } to: [ { email: "recipient1@example.com" name: "Recipient 1" } ] subject: "Bulk Email 1" content: [ { type: "text/html" value: "<h1>Email 1</h1>" } ] } { from: { email: "sender@example.com" name: "Sender Name" } to: [ { email: "recipient2@example.com" name: "Recipient 2" } ] subject: "Bulk Email 2" content: [ { type: "text/html" value: "<h1>Email 2</h1>" } ] } ] } ) { messageIds success }}Response:
{ "data": { "sendgrid_sendBulkEmail": { "messageIds": ["sent-1234567890", "sent-1234567891"], "success": true } }}Отправка писем с шаблонами
Заголовок раздела «Отправка писем с шаблонами»Отправить письмо с использованием динамического шаблона
Заголовок раздела «Отправить письмо с использованием динамического шаблона»Mutation:
mutation sendgrid_sendTemplate { sendgrid_sendTemplate( email: { from: { email: "sender@example.com" name: "Sender Name" } to: [ { email: "recipient@example.com" name: "Recipient Name" } ] templateId: "d-1234567890abcdef" substitutions: { name: "John Doe" orderNumber: "12345" totalAmount: "$99.99" } } ) { messageId success }}Response:
{ "data": { "sendgrid_sendTemplate": { "messageId": "sent-1234567890", "success": true } }}Управление контактами
Заголовок раздела «Управление контактами»Добавить контакт
Заголовок раздела «Добавить контакт»Mutation:
mutation sendgrid_addContact { sendgrid_addContact( contact: { email: "newcontact@example.com" firstName: "John" lastName: "Doe" customFields: { company: "Acme Corp" phone: "+1234567890" position: "Developer" } listIds: ["list-id-1", "list-id-2"] } )}Response:
{ "data": { "sendgrid_addContact": true }}Обновить контакт
Заголовок раздела «Обновить контакт»Mutation:
mutation sendgrid_updateContact { sendgrid_updateContact( contact: { email: "existing@example.com" firstName: "Jane" lastName: "Smith" customFields: { company: "New Company" phone: "+0987654321" } } )}Response:
{ "data": { "sendgrid_updateContact": true }}Удалить контакт
Заголовок раздела «Удалить контакт»Mutation:
mutation sendgrid_deleteContact { sendgrid_deleteContact( email: "contact@example.com" )}Response:
{ "data": { "sendgrid_deleteContact": true }}Аналитика и статистика
Заголовок раздела «Аналитика и статистика»Получить статистику электронной почты
Заголовок раздела «Получить статистику электронной почты»Query:
query sendgrid_getEmailStats { sendgrid_getEmailStats ( startDate: "2025-01-01" endDate: "2025-01-31" ) { opens clicks bounces spamReports delivered startDate endDate }}Response:
{ "data": { "sendgrid_getEmailStats": { "opens": 150, "clicks": 75, "bounces": 5, "spamReports": 2, "delivered": 1000, "startDate": "2025-01-01T00:00:00Z", "endDate": "2025-01-31T00:00:00Z" } }}Проверить электронную почту
Заголовок раздела «Проверить электронную почту»Query:
query sendgrid_validateEmail { sendgrid_validateEmail ( email: "test@example.com" ) { valid score local domain reason suggestions }}Response (с SendGrid Premium):
{ "data": { "sendgrid_validateEmail": { "valid": true, "score": 0.95, "local": "test", "domain": "example.com", "reason": "", "suggestions": [] } }}Response (Базовая проверка - когда SendGrid Premium недоступен):
{ "data": { "sendgrid_validateEmail": { "valid": true, "score": 0.8, "local": "test", "domain": "example.com", "reason": "Basic validation (SendGrid premium validation not available)", "suggestions": [] } }}Примечание: Конечная точка проверки электронной почты SendGrid (/v3/validations/email) требует специальных разрешений и может быть недоступна для всех учетных записей. Если ваш ключ API не имеет доступа к этой конечной точке (ошибка 403), система автоматически будет использовать базовую проверку на основе регулярных выражений в качестве запасного варианта.
Полные примеры с переменными
Заголовок раздела «Полные примеры с переменными»Пример с переменными GraphQL
Заголовок раздела «Пример с переменными GraphQL»Request:
{ "query": "mutation SendEmail($email: EmailInput!) { sendgrid_sendEmail(email: $email) { messageId success } }", "variables": { "email": { "from": { "email": "sender@example.com", "name": "Sender Name" }, "to": [ { "email": "recipient@example.com", "name": "Recipient Name" } ], "subject": "Test Email", "content": [ { "type": "text/html", "value": "<h1>Hello World</h1>" } ] } }}Обработка ошибок
Заголовок раздела «Обработка ошибок»Пример ошибки
Заголовок раздела «Пример ошибки»Request:
{ "query": "mutation { sendgrid_sendEmail(email: { from: { email: \"invalid\" }, to: [], subject: \"Test\", content: [] }) { messageId success } }"}Response Error:
{ "errors": [ { "message": "validation error: at least one recipient is required", "path": ["sendgrid_sendEmail"] } ], "data": null}Распространенные ошибки
Заголовок раздела «Распространенные ошибки»-
Отсутствует ID проекта:
{"errors": [{"message": "project ID is required in context"}]} -
Конфигурация не найдена:
{"errors": [{"message": "sendgrid configuration not found for project: xxx, environment: master"}]} -
Недействительный ключ API:
{"errors": [{"message": "sendgrid API error: status 401, body: ..."}]}
Webhooks
Заголовок раздела «Webhooks»Конечная точка Webhooks
Заголовок раздела «Конечная точка Webhooks»Конечная точка webhooks доступна по адресу:
- HTTP:
POST http://localhost:8080/webhooks/sendgrid - Lambda:
POST /webhooks/sendgrid
Настройка SendGrid
Заголовок раздела «Настройка SendGrid»- Перейдите в SendGrid Dashboard > Settings > Mail Settings > Event Webhook
- Настройте URL:
https://your-domain.com/webhooks/sendgrid - Выберите события, которые хотите получать
- Настройте ключ верификации в переменной окружения
WEBHOOK_VERIFICATION_KEY
Поддерживаемые события
Заголовок раздела «Поддерживаемые события»processed: Письмо обработаноdelivered: Письмо доставленоopened: Письмо открытоclicked: Ссылка нажатаbounce: Письмо возвращеноdropped: Письмо отброшеноspamreport: Сообщено как спамunsubscribe: Отписка