Sign inGet Started

Go · Gin

किसी Gin एप्लिकेशन से अपना पहला ईमेल तीन चरणों में भेजें: SDK इंस्टॉल करें, ईमेल भेजने वाला एक रूट जोड़ें और उसे चलाएँ।

1. इंस्टॉल करें

कोड उदाहरण
go mod init example.com/bird-gin-quickstart
go get github.com/gin-gonic/gin github.com/messagebird/bird-sdk-go

SDK के लिए Go 1.24+ ज़रूरी है। डैशबोर्ड में Developers > API keys से एक API कुंजी लें और उसे export करें। SDK कुंजी के bk_us1_ / bk_eu1_ प्रीफ़िक्स से क्षेत्र का पता लगा लेता है, इसलिए और कुछ कॉन्फ़िगर करने की ज़रूरत नहीं है:

कोड उदाहरण
export BIRD_API_KEY="bk_us1_..."

2. भेजें

main.go बनाएँ और उसमें एक ऐसा रूट जोड़ें जो Bird के साझा ऑनबोर्डिंग डोमेन से ईमेल भेजता है, ताकि डोमेन सत्यापन की ज़रूरत न पड़े:

कोड उदाहरण
package main

import (
	"errors"
	"log"
	"net/http"
	"os"

	"github.com/gin-gonic/gin"
	bird "github.com/messagebird/bird-sdk-go"
	"github.com/messagebird/bird-sdk-go/option"
)

func main() {
	client, err := bird.NewClient(option.WithAPIKey(os.Getenv("BIRD_API_KEY")))
	if err != nil {
		log.Fatal(err)
	}

	r := gin.Default()
	r.POST("/send", func(c *gin.Context) {
		msg, err := client.Email.Send(c.Request.Context(), bird.EmailSendParams{
			From:    "onboarding@messagebird.dev",
			To:      []string{"delivered@messagebird.dev"},
			Subject: "Hello from Bird",
			HTML:    "<p>My first Bird email.</p>",
		})
		if err != nil {
			var apiErr *bird.APIError
			if errors.As(err, &apiErr) {
				c.JSON(apiErr.StatusCode, gin.H{"error": apiErr.Error()})
				return
			}
			c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
			return
		}
		c.JSON(http.StatusAccepted, msg)
	})

	log.Fatal(r.Run(":3000"))
}

SDK हर Send कॉल के लिए एक idempotency कुंजी बनाता है और टाइमआउट, 429 प्रतिक्रियाओं और 5xx प्रतिक्रियाओं पर फिर से प्रयास करते समय उसी कुंजी का दोबारा उपयोग करता है। इसलिए फिर से प्रयास करने पर ईमेल दूसरी बार नहीं भेजा जाता।

3. आज़माएँ

कोड उदाहरण
go run . &
curl -X POST localhost:3000/send

Bird 202 के साथ जवाब देता है, यानी ईमेल को एसिंक्रोनस डिलीवरी के लिए स्वीकार कर लिया गया है, और रूट संदेश लौटाता है। *_count फ़ील्ड डिलीवरी की अवस्थाओं में प्राप्तकर्ताओं को ट्रैक करते हैं। शुरुआती प्रतिक्रिया में एक प्राप्तकर्ता स्वीकार किया गया है और किसी को भी डिलीवर नहीं किया गया है:

कोड उदाहरण
{
  "id": "em_01ky7ma8y2es1s2akzk53tmjn0",
  "status": "accepted",
  "category": "marketing",
  "from": { "email": "onboarding@messagebird.dev" },
  "to": [{ "email": "delivered@messagebird.dev" }],
  "subject": "Hello from Bird",
  "accepted_count": 1,
  "processed_count": 0,
  "delivered_count": 0,
  "deferred_count": 0,
  "bounced_count": 0,
  "complained_count": 0,
  "rejected_count": 0,
  "open_count": 0,
  "click_count": 0,
  "track_opens": true,
  "track_clicks": true,
  "created_at": "2026-07-23T13:58:20.866Z"
}

प्राप्तकर्ता delivered@messagebird.dev सैंडबॉक्स पता है, इसलिए डिलीवरी निश्चित है। client.Email.Get से संदेश को उसकी em_ ID के ज़रिए प्राप्त करें और स्टेटस को delivered में बदलते हुए देखें।

अगले चरण

इस विषय के लिए दस्तावेज़, गाइड और उदाहरणों के साथ आगे बढ़ें।