>백엔드 개발 >Golang >Gmail Go SDK를 사용하여 효과적으로 이메일을 보내는 방법: 단계별 가이드

Gmail Go SDK를 사용하여 효과적으로 이메일을 보내는 방법: 단계별 가이드

Susan Sarandon
Susan Sarandon원래의
2024-10-28 08:08:301099검색

How to Send Emails Effectively with the Gmail Go SDK: A Step-by-Step Guide

Gmail Go SDK를 사용하여 이메일 보내기

Gmail Go SDK를 통해 이메일을 보내는 것은 보내기 방법에 필요한 메시지 유형으로 인해 어려울 수 있습니다. 제한된 문서가 있습니다. 그러나 다음 코드를 사용하면 서비스를 사용하여 효과적으로 이메일을 보낼 수 있습니다.

<code class="go">import (
    "code.google.com/p/goauth2/oauth"
    "code.google.com/p/google-api-go-client/gmail/v1"
    log "github.com/golang/glog"

    "encoding/base64"
    "encoding/json"
    "net/mail"
    "strings"
    )


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

func (em *Email) SendMessage(cl *Client) error {
    config.ClientId = cl.Username //oauth clientID
    config.ClientSecret = cl.Password  //oauth client secret 

    t := &amp;oauth.Transport{
        Config:    config,
        Transport: http.DefaultTransport,
    }
    var tk oauth.Token
    err := json.Unmarshal([]byte(cl.Meta), &amp;tk)
    t.Token = &amp;tk
    if err != nil {
        log.Errorf("meta %v, err %v", cl.Meta, err)
        return err
    }
    gmailService, err := gmail.New(t.Client())
    if err != nil {
        log.Error(err)
        return err
    }

    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)),
    }

    _, err = gmailService.Users.Messages.Send("me", &amp;gmsg).Do()
    if err != nil {
        log.Errorf("em %v, err %v", gmsg, err)
        return err
    }
    return err
}



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>

이 개선된 코드:

  • 향상된 MIME 준수를 위해 net/mail을 사용하여 이메일 헤더를 구성합니다. .
  • base64를 사용하여 이메일을 인코딩하고 이를 메시지 유형의 원시 필드에 추가합니다.
  • mail.Address를 사용하여 보낸 사람 및 받는 사람 주소의 형식을 올바르게 지정합니다.

위 내용은 Gmail Go SDK를 사용하여 효과적으로 이메일을 보내는 방법: 단계별 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.