Heim  >  Artikel  >  Backend-Entwicklung  >  So senden Sie E-Mails mit dem Gmail Go SDK: Lösen Sie das Rätsel bei der Erstellung von Nachrichtenobjekten?

So senden Sie E-Mails mit dem Gmail Go SDK: Lösen Sie das Rätsel bei der Erstellung von Nachrichtenobjekten?

Barbara Streisand
Barbara StreisandOriginal
2024-10-27 12:19:30862Durchsuche

How to Send Emails Using the Gmail Go SDK: Solving the Message Object Creation Puzzle?

So senden Sie E-Mails über das Gmail Go SDK

Problem:

Versenden von E-Mails mit dem Das Gmail Go SDK kann eine Herausforderung darstellen, insbesondere aufgrund des Fehlens einer klaren Dokumentation zum Erstellen des erforderlichen Nachrichtenobjekts. Die Felder des Nachrichtentyps erleichtern in erster Linie das Parsen von E-Mails, sodass unklar ist, wie eine gültige Nutzlast zum Senden von E-Mails erstellt wird.

Lösung:

Trotz der Komplexität der API sind hier Schritte aufgeführt So senden Sie E-Mails über das Gmail Go SDK:

1. Erstellen Sie ein Nachrichtenobjekt:

  • Erstellen Sie eine MessagePart-Instanz (p) und fügen Sie Header für „Von“, „An“ und „Betreff“ hinzu.
  • Kodieren Sie die E-Mail message (em) als Base64-String (emsg) und legen Sie ihn als Rohwert der Nutzlast fest.

2. Initialisieren Sie einen Gmail-Dienst:

  • Erhalten Sie ein OAuth-Token vom Benutzer und verwenden Sie es, um einen Gmail-Client zu initialisieren.

3. Senden Sie die E-Mail:

  • Rufen Sie die Send-Methode mit dem Nachrichtenobjekt als Argument auf.

4. Header-Werte codieren:

  • Um RFC 2047 einzuhalten, codieren Sie Header-Werte für „Von“ und „Betreff“.

5. Kodieren Sie den Nachrichtentext:

  • Kodieren Sie den Nachrichtentext mit Web64-Kodierung.

Benutzerdefiniertes Code-Snippet:

<code class="go">import (
    "encoding/base64"
    "encoding/json"
    "fmt"
    "log"
    "net/mail"
    "strings"

    gmail "google.golang.org/api/gmail/v1"
)

type Email struct {
    FromName, FromEmail, ToName, ToEmail, Subject string
    Message                                       string
}

func (em *Email) SendMessage(cl *Client) error {
    from := mail.Address{em.FromName, em.FromEmail}
    to := mail.Address{em.ToName, em.ToEmail}

    header := make(map[string]string)
    header["From"] = from.String()
    header["To"] = to.String()
    header["Subject"] = encodeRFC2047(em.Subject)
    header["MIME-Version"] = "1.0"
    header["Content-Type"] = "text/html; charset=\"utf-8\""
    header["Content-Transfer-Encoding"] = "base64"

    var msg string
    for k, v := range header {
        msg += fmt.Sprintf("%s: %s\r\n", k, v)
    }
    msg += "\r\n" + em.Message

    gmsg := gmail.Message{
        Raw: encodeWeb64String([]byte(msg)),
    }

    // Send the email using Gmail Service
    ...

    return nil
}

func encodeRFC2047(s string) string {
    // use mail's rfc2047 to encode any string
    addr := mail.Address{s, ""}
    return strings.Trim(addr.String(), " <>")
}

func encodeWeb64String(b []byte) string {
    s := base64.URLEncoding.EncodeToString(b)

    var i = len(s) - 1
    for s[i] == '=' {
        i--
    }

    return s[0 : i+1]
}</code>

Indem Sie diese Schritte befolgen, können Sie ein gültiges Nachrichtenobjekt erstellen und E-Mails erfolgreich über das Gmail Go SDK versenden.

Das obige ist der detaillierte Inhalt vonSo senden Sie E-Mails mit dem Gmail Go SDK: Lösen Sie das Rätsel bei der Erstellung von Nachrichtenobjekten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn