>백엔드 개발 >Golang >Gmail Go SDK를 사용하여 이메일을 보내는 방법: 메시지 개체 생성 문제 해결?

Gmail Go SDK를 사용하여 이메일을 보내는 방법: 메시지 개체 생성 문제 해결?

Barbara Streisand
Barbara Streisand원래의
2024-10-27 12:19:30998검색

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

Gmail Go SDK를 통해 이메일을 보내는 방법

문제:

Gmail Go SDK는 특히 필수 메시지 객체 생성에 대한 명확한 문서가 부족하기 때문에 어려울 수 있습니다. 메시지 유형의 필드는 주로 이메일 구문 분석을 용이하게 하므로 이메일 전송을 위한 유효한 페이로드를 구성하는 방법이 불분명합니다.

해결책:

API의 복잡성에도 불구하고 다음 단계를 따르세요. Gmail Go SDK를 통해 이메일을 보내려면:

1. 메시지 객체 생성:

  • MessagePart 인스턴스(p)를 생성하고 "보낸 사람", "받는 사람" 및 "제목"에 대한 헤더를 추가합니다.
  • 이메일을 인코딩합니다. 메시지(em)를 base64 문자열(emsg)로 지정하고 이를 페이로드의 원시 값으로 설정합니다.

2. Gmail 서비스 초기화:

  • 사용자로부터 OAuth 토큰을 획득하고 이를 사용하여 Gmail 클라이언트를 초기화합니다.

3. 이메일 보내기:

  • 메시지 객체를 인수로 사용하여 Send 메소드를 호출합니다.

4. 헤더 값 인코딩:

  • RFC 2047을 준수하려면 "보낸 사람" 및 "제목"에 대한 헤더 값을 인코딩합니다.

5. 메시지 본문 인코딩:

  • Web64 인코딩을 사용하여 메시지 본문을 인코딩합니다.

사용자 정의 코드 조각:

<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>

이 단계를 따르면 유효한 메시지 개체를 구성하고 Gmail Go SDK를 통해 이메일을 성공적으로 보낼 수 있습니다.

위 내용은 Gmail Go SDK를 사용하여 이메일을 보내는 방법: 메시지 개체 생성 문제 해결?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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