使用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物件來發送郵件。

更新於:2023年5月3日

969 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.