使用Golang透過SMTP傳送郵件
在這篇Golang文章中,我們將學習如何使用SMTP的SendMail方法以及使用SMTP結合go mail方法來發送郵件。
SMTP代表簡單郵件傳輸協議。此協議用於在伺服器之間傳送郵件。net/smtp包提供了一種傳送郵件的媒介,因此必須在程式中匯入。
語法
smtp.PlainAuth()
此函式屬於smtp包,主要用於使用普通身份驗證與SMTP伺服器進行身份驗證。
smtp.SendMail()
此函式存在於SMTP包中。它用於從SMTP伺服器傳送郵件。
smtpClient.Auth()
它是gomail包中的一個方法。它用於使用不同的身份驗證方法與SMTP伺服器進行身份驗證。
smtpClient.StartTLS()
此方法屬於gomail包,用於與SMTP伺服器建立TLS會話。
gomail.Send()
此方法屬於gomail包。它用於在SMTP客戶端的幫助下將郵件傳送到目的地。
方法一
在這個方法中,我們將建立一個SMTP伺服器、SMTP埠、發件人郵箱、發件人密碼和收件人郵箱。然後,將準備要使用SMTP傳送的訊息。
演算法
步驟1 - 建立一個main包,並在程式中宣告fmt(格式化包)和net/smtp包,其中main生成可執行程式碼,fmt幫助格式化輸入和輸出。
步驟2 - 建立一個main函式,並在該函式中建立一個SMTP伺服器和SMTP埠。
步驟3 - 在此步驟中,設定發件人郵箱、發件人密碼和收件人郵箱。
步驟4 - 然後,使用byte函式透過新增收件人郵箱和主題來設定郵件正文。
步驟5 - 使用PlainAuth方法使用發件人郵箱和密碼作為輸入來驗證SMTP伺服器。
步驟6 - 最後,使用SendMail函式傳送郵件,如果傳送郵件時遇到任何錯誤,則使用panic列印它。
步驟7 - 如果沒有錯誤,則列印“郵件傳送成功”。
示例
以下是使用smtp包中的SendMail方法透過SMTP傳送郵件的Golang程式。
package main
import (
"net/smtp"
"fmt"
)
func main() {
smtp_server := "smtp.gmail.com"
smtp_port := "587"
senders_email := "kanishk_134@gmail.com"
senders_password := "your_gmail_password"
recipient_email := "recipient_email@Example.com"
message := []byte("To: " + recipient_email + "\r\n" +
"Subject: Go SMTP Test\r\n" +
"\r\n" +
"Hello,\r\n" +
"This is a test email sent from Go!\r\n")
auth := smtp.PlainAuth("", senders_email, senders_password, smtp_server)
err := smtp.SendMail(smtp_server+":"+smtp_port, auth, senders_email, []string{recipient_email}, message)
if err != nil {
panic(err)
}
fmt.Println("Email sent successfully!")
}
輸出
Email sent successfully!
方法二
在此方法中,將建立一個gomail物件以使用SMTP傳送郵件。它提供高階功能,例如HTML內容、郵件模板和附件。
演算法
步驟1 - 建立一個main包,並在程式中宣告fmt(格式化包)、net/smtp和"gopkg.in/gomail.v2"包,其中main生成可執行程式碼,fmt幫助格式化輸入和輸出。
步驟2 - 在main函式中設定SMTP伺服器和SMTP埠以傳送郵件。
步驟3 - 然後,設定發件人郵箱、發件人密碼和收件人郵箱。
步驟4 - 在此步驟中,使用gomail.NewMessage建立物件,並使用Headers建立要傳送給接收者的郵件。
步驟5 - 使用發件人郵箱和發件人密碼驗證SMTP伺服器。
步驟6 - 使用SMTP包中的Dial函式設定SMTP客戶端。
步驟7 - 使用Auth方法設定身份驗證憑據。
步驟8 - 呼叫smtpClient.StartTLS(nil)啟用TLS加密,然後最後使用gomail.Send函式傳送郵件。
步驟9 - 如果傳送郵件時遇到任何錯誤,則使用panic列印錯誤。
步驟10 - 如果沒有錯誤,則列印“郵件傳送成功”。
示例
以下是使用gomail物件透過SMTP傳送郵件的Golang程式。
package main
import (
"fmt"
"net/smtp"
"gopkg.in/gomail.v2"
)
func main() {
smtp_server := "smtp.gmail.com"
smtp_port := 587
sender_email := "Rahul_email@gmail.com"
sender_password := "ABC_email_password"
recipient_email := "recipient_email@Example.com"
message := gomail.NewMessage()
message.SetHeader("From", sender_email)
message.SetHeader("To", recipient_email)
message.SetHeader("Subject", "Go SMTP Test")
message.SetBody("text/plain", "Hello,\r\nThis is a test email sent from Go using the gomail package!")
auth := smtp.PlainAuth("", sender_email, sender_password, smtp_server)
smtpClient, err := smtp.Dial(smtp_server + ":" + string(smtp_port))
if err != nil {
panic(err)
}
defer smtpClient.Close()
smtpClient.Auth(auth)
smtpClient.StartTLS(nil)
err = gomail.Send(smtpClient, message)
if err != nil {
panic(err)
}
fmt.Println("Email sent successfully!")
}
輸出
Email sent successfully!
結論
我們編譯並執行了使用SMTP傳送郵件的程式。在第一個示例中,我們使用byte函式準備郵件,並使用Send方法傳送它;在第二個示例中,我們建立了一個gomail物件來發送郵件。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP