網上能找到使用golang 發送郵件和發送加密郵件的教程。發送簡單的文本郵件很是簡單,但遇到須要發送附件時就基本要靠github.com/scorredoira/email。git
若是要發送加密帶附件的郵件,郵件構造和加密處理加起來就顯得代碼有點雜。所以就本身封裝了ssl
部分。固然,郵件構造就再也不重複造輪子了,仍是使用這個庫github.com/scorredoira/email。github
用的是aliyun郵箱作測試。加密和非加密的區別就在於使用的時25
端口仍是465
端口。golang
package emailagent_test import ( "net/mail" "testing" "github.com/scorredoira/email" "github.com/zhnxin/emailagent" ) func generateEmail() (*email.Message, error) { // compose the message m := email.NewMessage("Hi", "this is the body") //這裏顯示的發件人名和郵箱,隨便寫不會影響郵件發送 m.From = mail.Address{Name: "nic name", Address: "username@aliyun.com"} m.To = []string{"target@aliyun.com"} // add attachments if err := m.Attach("agent.go"); err != nil { return nil, err } // add headers m.AddHeader("X-CUSTOMER-id", "xxxxx") return m, nil } func TestSSL(t *testing.T) { msg, err := generateEmail() if err != nil { t.Fatal(err) } agent := emailagent.New("exmaple@aliyun.com", "password", "smtp.aliyun.com", 465, true) //agent := emailagent.NewWithIdentify("identify","exmaple@aliyun.com", "password", "smtp.aliyun.com", 465, true) if err = agent.SendEmail(msg); err != nil { t.Fatal(err) } } func TestPlainAuth(t *testing.T) { msg, err := generateEmail() if err != nil { t.Fatal(err) } agent := emailagent.New("exmaple@aliyun.com", "password", "smtp.aliyun.com", 25, false) //agent := emailagent.NewWithIdentify("identify","exmaple@aliyun.com", "password", "smtp.aliyun.com", 25, false) if err = agent.SendEmail(msg); err != nil { t.Fatal(err) } }