Go 發送郵件


Go 發送郵件

1. 安裝依賴包

go get github.com/go-gomail/gomail

2. 示例代碼

email.go

package email

import (
	"log"

	"github.com/go-gomail/gomail"
)

type EmailInfo struct {
	ServerHost string // ServerHost 郵箱服務器地址,如騰訊企業郵箱為smtp.exmail.qq.com
	ServerPort int    // ServerPort 郵箱服務器端口,如騰訊企業郵箱為465

	FromEmail  string // FromEmail 發件人郵箱地址
	FromPasswd string //發件人郵箱密碼(注意,這里是明文形式)

	Recipient []string //收件人郵箱
	CC        []string //抄送
}

var emailMessage *gomail.Message

/**
 * @Author: dcj
 * @Date: 2020-04-02 15:45:55
 * @Description: 發送郵件
 * @Param : subject[主題]、body[內容]、emailInfo[發郵箱需要的信息(參考EmailInfo)]
 * @Return:
 */
func SendEmail(subject, body string, emailInfo *EmailInfo) {
	if len(emailInfo.Recipient) == 0 {
		log.Print("收件人列表為空")
		return
	}

	emailMessage = gomail.NewMessage()
	//設置收件人
	emailMessage.SetHeader("To", emailInfo.Recipient...)
	//設置抄送列表
	if len(emailInfo.CC) != 0 {
		emailMessage.SetHeader("Cc", emailInfo.CC...)
	}
	// 第三個參數為發件人別名,如"dcj",可以為空(此時則為郵箱名稱)
	emailMessage.SetAddressHeader("From", emailInfo.FromEmail, "dcj")

	//主題
	emailMessage.SetHeader("Subject", subject)

	//正文
	emailMessage.SetBody("text/html", body)

	d := gomail.NewPlainDialer(emailInfo.ServerHost, emailInfo.ServerPort,
		emailInfo.FromEmail, emailInfo.FromPasswd)
	err := d.DialAndSend(emailMessage)
	if err != nil {
		log.Println("發送郵件失敗: ", err)
	} else {
		log.Println("已成功發送郵件到指定郵箱")
	}
}

3. 測試

email_test.go

/*
 * @Author: dcj
 * @Date: 2020-04-02 12:39:08
 * @LastEditTime: 2020-04-02 16:06:40
 * @Description: 發送郵件功能測試
 */
package email

import "testing"

func TestSendEmail(t *testing.T) {
	reclist := []string{"xxxxxx@163.com"}  //收件人郵箱地址

	info := &EmailInfo{
		"smtp.163.com",
		25,
		"xxxxxx@qq.com",     //發件人郵箱地址
		"sciuusqoaqqfbfdd",
		reclist,
		nil,
	}

	SendEmail("網頁測試信息", "<h1>測試信息:</h1><p>您收到一條測試信息</p>", info)
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM