Dërgoni një email
Një mesazh tani ose më vonë, me bashkëngjitje, ose njëqind në një kërkesë të vetme.
Dërgoni një mesazh
sent, err := client.Emails.Send(ctx, openemail.Body{ "from": "Acme Billing <[email protected]>", "to": []string{"[email protected]", "[email protected]"}, "replyTo": "[email protected]", "subject": "Your September invoice", "html": "<p>The invoice is attached.</p>", "text": "The invoice is attached.", "tags": openemail.Body{"invoice": "inv_2026_09_4192"},})if err != nil { return err} fmt.Println(sent.ID(), sent.String("status"))to, cc dhe bcc pranojnë një adresë ose një listë, dhe një adresë është tekst si Ada <[email protected]> ose një map me email dhe name. Trupi vjen nga html dhe text, nga një template i ruajtur, ose nga një draftId.
Çdo dërgim mban një çelës idempotence. Klienti krijon një për çdo thirrje dhe e ripërdor kur riprovon, kështu që një kërkesë e riprovuar e përsërit mesazhin e parë. Jepni openemail.WithIdempotencyKey që kjo të vlejë edhe ndërmjet proceseve dhe rinisjeve.
Bashkëngjitjet
invoice, err := os.ReadFile("invoice.pdf")if err != nil { return err} _, err = client.Emails.Send(ctx, openemail.Body{ "from": "[email protected]", "to": "[email protected]", "subject": "Your September invoice", "text": "The invoice is attached.", "attachments": []openemail.Body{ {"filename": "invoice.pdf", "content": invoice, "contentType": "application/pdf"}, {"fileId": "file_3f9c2a7b1e4d8f60a5c7b92d"}, },}) return errcontent merr një []byte ose një io.Reader, të cilët klienti i kodon si base64, ose tekst që është tashmë base64. fileId emërton një skedar të ngarkuar me client.Files.Upload, dhe kështu dërgohet një skedar më i madh se 5 MB.
Dërgoni më vonë
scheduled, err := client.Emails.Send(ctx, openemail.Body{ "from": "[email protected]", "to": "[email protected]", "subject": "Your invoice is due tomorrow", "text": "A reminder that the invoice is due tomorrow.", "scheduledAt": time.Now().Add(24 * time.Hour),})if err != nil { return err} if _, err := client.Emails.Reschedule(ctx, scheduled.ID(), time.Now().Add(48*time.Hour)); err != nil { return err} cancelled, err := client.Emails.Cancel(ctx, scheduled.ID())if err != nil { return err} fmt.Println(cancelled.String("status"))scheduledAt merr një time.Time, një çast ISO 8601 ose një kohëzgjatje si PT1H. Një time.Time kudo në një trup dërgohet si një çast ISO 8601 në UTC. Një mesazh i planifikuar mund të ndryshohet ose të anulohet derisa të niset.
Dërgoni një grup
result, err := client.Emails.SendBatch(ctx, []openemail.Body{ {"from": "[email protected]", "to": "[email protected]", "subject": "Order AC-4192 has shipped", "text": "It is on its way."}, {"from": "[email protected]", "to": "[email protected]", "subject": "Order AC-4193 has shipped", "text": "It is on its way."},})if err != nil { return err} fmt.Println(result.Sent, "sent,", result.Failed, "failed") for _, item := range result.Items { if item.String("status") == "error" { fmt.Println(item.Int("index"), item.Object("error").String("message")) }}Një grup mban deri në 100 mesazhe dhe nuk është kurrë gjithçka ose asgjë: një adresë e gabuar e bën të dështojë vetëm elementin e vet dhe pjesa tjetër niset gjithsesi. Kontrolloni Failed dhe status të çdo elementi në vend që të mbështeteni te një gabim.