'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 服务器允许使用给定的发件人邮箱和密码进行身份验证。

此代码仅仅是一个简单的示例,你可以根据自己的需求进行扩展和修改。

Go语言邮件发送:使用 net/smtp 包发送电子邮件

原文地址: https://www.cveoy.top/t/topic/l72h 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录