Golang 发送SMTP电子邮件
在这篇Golang文章中,我们可以使用SMTP的SendMail方法发送电子邮件,也可以使用go mail方法与SMTP一起使用。
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步 − 在main程序中创建一个main包,并声明fmt(格式化包)net/smtp包,其中main产生可执行代码,fmt用于格式化输入和输出。
-
第2步 − 创建一个main函数,并在该函数中创建一个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 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!
方法2
在此方法中,将创建一个gomail对象,使用SMTP发送消息。它提供了高级功能,如HTML内容、电子邮件模板和附件。
步骤
- 步骤1 - 在主程序中创建一个main包,并声明fmt(格式化包)、net/smtp和“gopkg.in/gomail.v2”包。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发送电子邮件的程序。在第一个示例中,我们使用字节函数准备了消息,并使用Send方法发送了消息;而在第二个示例中,我们创建了一个gomail对象来发送消息。