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

Barbara Streisand
Freigeben: 2024-10-27 12:19:30
Original
875 Leute haben es durchsucht

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!