Mengirim dan Menerima Email dengan Mail API

Panduan ini menjelaskan cara menggunakan Mail API untuk mengirim dan menerima email.

Sebelum memulai

Anda harus mendaftarkan email pengirim sebagai pengirim yang sah. Untuk mengetahui informasi selengkapnya, lihat siapa yang dapat mengirim email.

Mengirim email

Untuk mengirim email dari aplikasi:

  1. Gunakan jenis mail.Message untuk menetapkan pengirim, penerima, subjek, dan isi pesan.

  2. Kirim email dengan fungsi mail.Send.

Contoh berikut mengirim pesan email kepada pengguna sebagai konfirmasi bahwa mereka telah membuat akun baru dengan aplikasi:

import (
	"bytes"
	"fmt"
	"net/http"

	"google.golang.org/appengine"
	"google.golang.org/appengine/log"
	"google.golang.org/appengine/mail"
)

func confirm(w http.ResponseWriter, r *http.Request) {
	ctx := appengine.NewContext(r)
	addr := r.FormValue("email")
	url := createConfirmationURL(r)
	msg := &mail.Message{
		Sender:  "Example.com Support <support@example.com>",
		To:      []string{addr},
		Subject: "Confirm your registration",
		Body:    fmt.Sprintf(confirmMessage, url),
	}
	if err := mail.Send(ctx, msg); err != nil {
		log.Errorf(ctx, "Couldn't send email: %v", err)
	}
}

const confirmMessage = `
Thank you for creating an account!
Please confirm your email address by clicking on the link below:

%s
`

Menerima email

Anda dapat menyiapkan aplikasi untuk menerima email masuk di alamat dalam format berikut:

anything@appid.appspotmail.com

Untuk menerima email:

  1. Aktifkan email masuk di file app.yaml aplikasi Anda:

    inbound_services:
    - mail
  2. Siapkan pengendali untuk memproses email masuk, yang diberikan ke aplikasi Anda sebagai data MIME dalam permintaan POST HTTP.

    1. Di aplikasi Anda, daftarkan pengendali ke jalur /_ah/mail/:

      func init() {
      	http.HandleFunc("/_ah/mail/", incomingMail)
      }
      
    2. Di pengendali, baca data email dari *http.Request:

      func incomingMail(w http.ResponseWriter, r *http.Request) {
      	ctx := appengine.NewContext(r)
      	defer r.Body.Close()
      	var b bytes.Buffer
      	if _, err := b.ReadFrom(r.Body); err != nil {
      		log.Errorf(ctx, "Error reading body: %v", err)
      		return
      	}
      	log.Infof(ctx, "Received mail: %v", b)
      }
      

    Anda dapat menggunakan paket net/mail di library standar untuk mengurai pesan email.