Dodawanie integra cji SendGrid
SendGrid to usługa oparta na chmurze do dostarczania transakcyjnych i marketingowych wiadomości e-mail. Podłączenie tej integracji pozwala aplikacji programowo wysyłać wiadomości e-mail (np. e-maile powitalne, resetowania haseł lub powiadomienia).
Kroki konfiguracji
Dział zatytułowany „Kroki konfiguracji”Po wybraniu SendGrid z listy integracji pojawi się okno modalne konfiguracji. Musisz podać następujące dane uwierzytelniające, aby nawiązać połączenie:
1. Klucz API
Dział zatytułowany „1. Klucz API”To jest token uwierzytelniający wygenerowany w ramach konta SendGrid.
- Wprowadzanie: Wklej swój prywatny klucz API SendGrid do pola tekstowego.
- Pomoc: Jeśli go nie masz, kliknij link “Gdzie znaleźć klucz API?” w oknie modalnym, aby uzyskać instrukcje dotyczące jego wygenerowania.
2. Środowisko
Dział zatytułowany „2. Środowisko”Określ kontekst środowiska dla tej integracji.
- Wprowadzanie: Wprowadź identyfikator środowiska (np.
Production,Staginglub określony tag konfiguracji) w polu Środowisko.
Finalizowanie połączenia
Dział zatytułowany „Finalizowanie połączenia”Po wypełnieniu pól:
- Przejrzyj pasek stanu (obecnie wyświetla Not Connected).
- Kliknij czarny przycisk Add w prawym dolnym rogu, aby zapisać dane uwierzytelniające i aktywować integrację.


Dokumentacja API integracji SendGrid
Dział zatytułowany „Dokumentacja API integracji SendGrid”Konfiguracja SendGrid
Dział zatytułowany „Konfiguracja SendGrid”Konfigurowanie klucza API SendGrid
Dział zatytułowany „Konfigurowanie klucza API SendGrid”Konfiguruje klucz API SendGrid dla określonego projektu i środowiska.
Mutation:
mutation { sendgrid_configureSendGrid ( apiKey: "SG._api_key_here" )}Wysyłanie wiadomości e-mail
Dział zatytułowany „Wysyłanie wiadomości e-mail”Wysłanie prostego e-maila
Dział zatytułowany „Wysłanie prostego e-maila”Wysyła wiadomość e-mail do jednego lub kilku odbiorców.
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 } }}Wysłanie e-maila z CC i BCC
Dział zatytułowany „Wysłanie e-maila z CC i 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 }}Wysłanie e-maila z załącznikami
Dział zatytułowany „Wysłanie e-maila z załącznikami”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 }}Uwaga: Pole content w załącznikach musi być zakodowane w Base64.
Wysłanie e-maila z kategoriami i tagami
Dział zatytułowany „Wysłanie e-maila z kategoriami i tagami”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 }}Wysłanie zaplanowanego e-maila
Dział zatytułowany „Wysłanie zaplanowanego e-maila”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 }}Wysłanie e-maila z niestandardowymi argumentami
Dział zatytułowany „Wysłanie e-maila z niestandardowymi argumentami”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 }}Wysyłanie masowych e-maili
Dział zatytułowany „Wysyłanie masowych e-maili”Wysłanie wielu e-maili
Dział zatytułowany „Wysłanie wielu e-maili”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 } }}Wysyłanie e-maili z szablonami
Dział zatytułowany „Wysyłanie e-maili z szablonami”Wysłanie e-maila przy użyciu dynamicznego szablonu
Dział zatytułowany „Wysłanie e-maila przy użyciu dynamicznego szablonu”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 } }}Zarządzanie kontaktami
Dział zatytułowany „Zarządzanie kontaktami”Dodanie kontaktu
Dział zatytułowany „Dodanie kontaktu”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 }}Aktualizacja kontaktu
Dział zatytułowany „Aktualizacja kontaktu”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 }}Usunięcie kontaktu
Dział zatytułowany „Usunięcie kontaktu”Mutation:
mutation sendgrid_deleteContact { sendgrid_deleteContact( email: "contact@example.com" )}Response:
{ "data": { "sendgrid_deleteContact": true }}Analityka i statystyki
Dział zatytułowany „Analityka i statystyki”Pobieranie statystyk e-mail
Dział zatytułowany „Pobieranie statystyk e-mail”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" } }}Walidacja e-maila
Dział zatytułowany „Walidacja e-maila”Query:
query sendgrid_validateEmail { sendgrid_validateEmail ( email: "test@example.com" ) { valid score local domain reason suggestions }}Response (z SendGrid Premium):
{ "data": { "sendgrid_validateEmail": { "valid": true, "score": 0.95, "local": "test", "domain": "example.com", "reason": "", "suggestions": [] } }}Response (Podstawowa walidacja - gdy SendGrid Premium nie jest dostępny):
{ "data": { "sendgrid_validateEmail": { "valid": true, "score": 0.8, "local": "test", "domain": "example.com", "reason": "Basic validation (SendGrid premium validation not available)", "suggestions": [] } }}Uwaga: Punkt końcowy walidacji e-mail SendGrid (/v3/validations/email) wymaga specjalnych uprawnień i może nie być dostępny we wszystkich kontach. Jeśli klucz API nie ma dostępu do tego punktu końcowego (błąd 403), system automatycznie użyje podstawowej walidacji opartej na regex jako rezerwowej.
Pełne przykłady ze zmiennymi
Dział zatytułowany „Pełne przykłady ze zmiennymi”Przykład ze zmiennymi GraphQL
Dział zatytułowany „Przykład ze zmiennymi 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>" } ] } }}Obsługa błędów
Dział zatytułowany „Obsługa błędów”Przykład błędu
Dział zatytułowany „Przykład błędu”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}Typowe błędy
Dział zatytułowany „Typowe błędy”-
Brakujący ID projektu:
{"errors": [{"message": "project ID is required in context"}]} -
Nie znaleziono konfiguracji:
{"errors": [{"message": "sendgrid configuration not found for project: xxx, environment: master"}]} -
Nieprawidłowy klucz API:
{"errors": [{"message": "sendgrid API error: status 401, body: ..."}]}
Webhooks
Dział zatytułowany „Webhooks”Punkt końcowy Webhooks
Dział zatytułowany „Punkt końcowy Webhooks”Punkt końcowy webhooks jest dostępny pod adresem:
- HTTP:
POST http://localhost:8080/webhooks/sendgrid - Lambda:
POST /webhooks/sendgrid
Konfiguracja SendGrid
Dział zatytułowany „Konfiguracja SendGrid”- Przejdź do SendGrid Dashboard > Settings > Mail Settings > Event Webhook
- Skonfiguruj URL:
https://twoja-domena.com/webhooks/sendgrid - Wybierz zdarzenia, które chcesz otrzymywać
- Skonfiguruj klucz weryfikacji w zmiennej środowiskowej
WEBHOOK_VERIFICATION_KEY
Obsługiwane zdarzenia
Dział zatytułowany „Obsługiwane zdarzenia”processed: E-mail przetworzonydelivered: E-mail dostarczonyopened: E-mail otwartyclicked: Link klikniętybounce: E-mail odrzuconydropped: E-mail porzuconyspamreport: Zgłoszony jako spamunsubscribe: Rezygnacja z subskrypcji