Go SDK
The official Render25 Go client module. Idiomatic, type-safe, context-aware, and built with zero external dependencies.
Go 1.20+github.com/Render-25/go-sdkZero Dependencies
Installation
bash
go get github.com/Render-25/go-sdkBasic Usage
Initialize the client. It automatically detects RENDER25_API_KEY from the environment.
main.go
package main
import (
"fmt"
"log"
"github.com/Render-25/go-sdk"
)
func main() {
// Reads RENDER25_API_KEY automatically from environment
client, err := render25.NewClient()
if err != nil {
log.Fatalf("Failed to initialize Render25: %v", err)
}
resp, err := client.Emails.Send(render25.SendEmailOptions{
From: "support@yourdomain.com",
To: []string{"user@example.com"},
Subject: "Welcome to Render25!",
Html: "<h1>Welcome aboard!</h1><p>Transactional email sent via Go.</p>",
Text: "Welcome aboard! Transactional email sent via Go.",
})
if err != nil {
log.Fatalf("Error sending email: %v", err)
}
fmt.Printf("Dispatched message ID: %s\n", resp.ID)
}Note
Set
RENDER25_API_KEY in your environment variables.CC, BCC & Custom Reply-To
advanced.go
package main
import (
"github.com/Render-25/go-sdk"
)
func sendReceipt(client *render25.Client) error {
_, err := client.Emails.Send(render25.SendEmailOptions{
From: "support@yourdomain.com",
To: []string{"customer@example.com"},
Cc: []string{"manager@example.com"},
Bcc: []string{"archive@example.com"},
ReplyTo: "helpdesk@yourdomain.com",
Subject: "Order #1042 Confirmed",
Html: "<p>Your order is being processed.</p>",
})
return err
}File Attachments
Pass raw file bytes directly with []byte. The SDK automatically encodes them into base64.
attachments.go
package main
import (
"os"
"github.com/Render-25/go-sdk"
)
func sendInvoice(client *render25.Client) error {
pdfBytes, err := os.ReadFile("invoice.pdf")
if err != nil {
return err
}
_, err = client.Emails.Send(render25.SendEmailOptions{
From: "billing@yourdomain.com",
To: []string{"client@example.com"},
Subject: "Your Invoice #1042",
Html: "<p>Your invoice is attached below.</p>",
Attachments: []render25.Attachment{
{
Filename: "invoice_1042.pdf",
Content: pdfBytes, // Raw []byte
ContentType: "application/pdf",
},
},
})
return err
}Gin Web Framework Example
server.go
package main
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/Render-25/go-sdk"
)
func main() {
r := gin.Default()
client := render25.MustNewClient()
r.POST("/api/welcome", func(c *gin.Context) {
var req struct {
Email string `json:"email"`
Name string `json:"name"`
}
if err := c.ShouldBindJSON(&req); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
resp, err := client.Emails.Send(render25.SendEmailOptions{
From: "welcome@yourdomain.com",
To: []string{req.Email},
Subject: "Welcome " + req.Name + "!",
Html: "<h1>Welcome " + req.Name + "!</h1>",
})
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
c.JSON(http.StatusOK, gin.H{"id": resp.ID})
})
r.Run(":8080")
}