Go语言邮件发送:使用 net/smtp 包发送电子邮件
'net/smtp' 是 Go 语言标准库中的一个包,用于发送邮件。使用 'net/smtp' 包,你可以连接到 SMTP 服务器并发送邮件。
下面是一个简单的示例代码,演示如何使用 'net/smtp' 发送邮件:
package main
import (
"fmt"
"log"
"net/smtp"
)
func main() {
// SMTP 服务器的地址和端口
smtpHost := "smtp.example.com"
smtpPort := 587
// 发件人的邮箱和密码
from := "your-email@example.com"
password := "your-password"
// 收件人的邮箱
to := "recipient@example.com"
// 邮件主题和内容
subject := "Hello from Go!"
body := "This is the email body."
// SMTP 身份验证信息
auth := smtp.PlainAuth("", from, password, smtpHost)
// 组装邮件内容
msg := fmt.Sprintf("Subject: %s\r\n\r\n%s", subject, body)
// 连接到 SMTP 服务器
conn, err := smtp.Dial(fmt.Sprintf("%s:%d", smtpHost, smtpPort))
if err != nil {
log.Fatal(err)
}
// 发送 EHLO 命令,与 SMTP 服务器建立连接
if err := conn.Hello("localhost"); err != nil {
log.Fatal(err)
}
// 开始身份验证
if err := conn.Auth(auth); err != nil {
log.Fatal(err)
}
// 设置发件人
if err := conn.Mail(from); err != nil {
log.Fatal(err)
}
// 设置收件人
if err := conn.Rcpt(to); err != nil {
log.Fatal(err)
}
// 获取数据写入器,用于发送邮件内容
w, err := conn.Data()
if err != nil {
log.Fatal(err)
}
// 写入邮件内容
_, err = w.Write([]byte(msg))
if err != nil {
log.Fatal(err)
}
// 关闭数据写入器
err = w.Close()
if err != nil {
log.Fatal(err)
}
// 关闭与 SMTP 服务器的连接
err = conn.Quit()
if err != nil {
log.Fatal(err)
}
fmt.Println("Email sent successfully!")
}
请注意,上述代码中的 SMTP 服务器地址、端口、发件人邮箱、密码、收件人邮箱等信息应该根据实际情况进行修改。使用此代码发送邮件时,需要确保你的 SMTP 服务器允许使用给定的发件人邮箱和密码进行身份验证。
此代码仅仅是一个简单的示例,你可以根据自己的需求进行扩展和修改。
原文地址: https://www.cveoy.top/t/topic/l72h 著作权归作者所有。请勿转载和采集!