نصب
یک ماژول، Go 1.24 به بعد، و هیچ چیز بیرون از کتابخانهٔ استاندارد.
نصب
نسخهٔ فعلی 0.0.1 است. برای هر متد TypeScript SDK یک متد دارد، و بررسی برابری ماژول هنگامی که یکی کم باشد یا درخواست دیگری بفرستد، ساخت را ناموفق میکند.
go get github.com/bfzli/openemail-gopackage main import ( "context" "fmt" "log" "github.com/bfzli/openemail-go") func main() { client := openemail.New() email, err := client.Emails.Send(context.Background(), openemail.Body{ "from": "Acme Billing <[email protected]>", "to": "[email protected]", "subject": "Your September invoice", "html": "<p>Invoice attached.</p>", }) if err != nil { log.Fatal(err) } fmt.Println(email.ID(), email.String("status"))}openemail.New() کلید را از OPENEMAIL_API_KEY میخواند، پس کد هیچ اعتبارنامهای در خود ندارد. اگر پیکربندیتان جای دیگری است، openemail.WithAPIKey را بدهید. New هرگز شکست نمیخورد: کلید ناموجود یا بدشکل را client.Err() و نخستین فراخوانی گزارش میکنند.
بدنهٔ درخواست یک openemail.Body است، یعنی یک map[string]any که کلیدهایش نامهای API را نگه میدارند، پس scheduledAt اینجا همانطور نوشته میشود که در مرجع API. پاسخ یک openemail.Object است، یعنی JSON رمزگشاییشده با خوانندههایی مانند ID، String، Int، Bool، Time و Object.
بازگشتن Send به این معنا نیست که پیام رفته است. یک ارسال زمانبندیشده یا لغوپذیر با queued یا scheduled برمیگردد و بعداً تعیین تکلیف میشود. status را بخوانید، نه این واقعیت را که فراخوانی بازگشت.
کجا اجرا میشود
Go 1.24 به بعد، روی هر سکویی که Go برایش ساخته میشود. درخواستها از net/http میگذرند، پس اتصالها دوباره به کار میروند و HTTPS_PROXY رعایت میشود. یک کلاینت را میتوان همزمان از چند goroutine با اطمینان به کار برد: هنگام شروع برنامه یکی بسازید و آن را به اشتراک بگذارید.
کلاینت یک کلید API فضای کاری را با خود دارد که میتواند ایمیل بفرستد و صندوق پستی را بخواند، پس جایش روی سرور، در یک کار پسزمینه یا در ابزاری است که روی دستگاه خودتان اجرا میشود. کلید را در یک متغیر محیطی یا مخزن رازهای فریمورکتان نگه دارید، هرگز در کد.