在Go语言中使用SMTP发送电子邮件

在Go语言中使用SMTP发送电子邮件

在本篇Go语言文章中,我们可以使用SMTP的SendMail方法发送电子邮件,也可以使用SMTP与go邮件方法一起使用。

SMTP代表简单邮件传输协议。该协议用于在服务器之间发送消息。net/smtp软件包提供了一种发送消息的媒介,因此必须在程序中导入。

语法

smtp.PlainAuth()

此函数属于smtp,主要用于使用纯文本身份验证与SMTP服务器进行身份验证。

smtp.SendMail()

此函数位于SMTP软件包中。用于从SMTP服务器发送消息。

smtpClient.Auth()

这是gomail软件包中的一种方法。用于使用不同的身份验证方法与SMTP服务器进行身份验证。

smtpClient.StartTLS()

此方法属于gomail包,用于与SMTP服务器建立TLS会话

gomail.Send()

此方法属于gomail包。它用于使用SMTP客户端将电子邮件发送到目的地。

方法1

在此方法中,我们将创建一个SMTP服务器,SMTP端口,发件人电子邮件,发件人密码和收件人电子邮件。然后,将准备要使用SMTP发送的消息。

算法

  • 步骤1 – 在程序中创建一个主要包,并声明fmt(格式化包)net/smtp包,其中fmt有助于格式化输入和输出,main则会生成可执行代码。

  • 步骤2 – 在主函数中创建SMTP服务器和SMTP端口

  • 步骤3 – 在此步骤中,设置发件人邮件,发件人密码以及收件人邮件

  • 步骤4 – 然后,使用byte函数通过在其中添加收件人的电子邮件、主题来设置消息正文

  • 步骤5 – 使用PlainAuth方法通过输入发件人电子邮件和密码与SMTP服务器进行身份验证

  • 步骤6 – 最后,使用SendMail函数发送电子邮件,如果在发送邮件时遇到任何错误,则使用panic打印它

  • 步骤7 – 如果没有获得错误,则打印电子邮件已成功发送

示例

以下是使用SMTP的SendMail方法发送电子邮件的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 sentfrom 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!

方法2

在这种特定方法中,将创建一个gomail对象,使用SMTP发送消息。它提供高级功能,如HTML内容,电子邮件模板和附件。

算法

  • 第一步 − 在主程序中创建一个名为“main”的包并声明 fmt(格式包) net/smtp 以及“gopkg.in/gomail.v2”包,其中fmt用于格式化输入和输出,主要产生可执行代码。

  • 第二步 − 在主函数中设置SMTP服务器和SMTP端口以发送邮件。

  • 第三步 − 然后,设置发件人的电子邮件、发件人的密码和收件人的电子邮件。

  • 第四步 − 在此步骤中,使用gomail.NewMessage创建一个对象,使用Headers创建要发送到接收方的消息。

  • 第五步 − 使用发件人的电子邮件和发件人的密码对SMTP服务器进行身份验证。

  • 第六步 − 使用SMTP包中的Dial函数设置SMTP客户端。

  • 第七步 − 使用Auth方法设置身份验证凭据。

  • 第八步 − 调用smtpClient.StartTLS(nil)以启用TLS加密,最后使用gomail.Send函数发送消息。

  • 第九步 − 如果在发送消息时遇到任何错误,请使用panic输出错误。

  • 第十步 − 如果没有看到任何错误,则输出“电子邮件已成功发送”。

例子

以下是使用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("电子邮件已成功发送!")
}

输出

电子邮件已成功发送!

结论

我们编译并执行了通过SMTP发送电子邮件的程序。在第一个示例中,我们使用byte函数准备了消息并使用Send方法发送了它,在第二个示例中,我们创建了一个gomail对象来发送消息。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程