当然,下面是一个用 Go 语言发送电子邮件的详细示例。我们将使用 gomail
包来实现邮件发送功能。这里的示例展示了如何配置邮件客户端,创建邮件,并发送邮件。
1. 安装 gomail
包
首先,我们需要安装 gomail
包。打开终端并运行以下命令:
1
|
sh go get gopkg.in/gomail.v2
|
2. 编写邮件发送功能
下面是一个简单的 Go 程序,它演示了如何使用 gomail
发送电子邮件。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
go package main
import (
"gopkg.in/gomail.v2"
"log"
"fmt"
)
func sendEmail(subject, body, toEmail string) error {
// SMTP server configuration.
smtpServer := "smtp.example.com" // SMTP server address (e.g., smtp.gmail.com for Gmail)
smtpPort := 587 // SMTP port (587 for TLS, 465 for SSL)
smtpUser := "your-email@example.com" // SMTP username
smtpPass := "your-email-password" // SMTP password
// Create a new email message
m := gomail.NewMessage()
m.SetHeader("From", smtpUser)
m.SetHeader("To", toEmail)
m.SetHeader("Subject", subject)
m.SetBody("text/plain", body)
// Set up the SMTP client
d := gomail.NewDialer(smtpServer, smtpPort, smtpUser, smtpPass)
// Send the email
if err := d.DialAndSend(m); err != nil {
return fmt.Errorf("failed to send email: %w", err)
}
return nil
}
func main() {
// Example email details
subject := "Test Email"
body := "This is a test email sent from Go!"
toEmail := "recipient@example.com"
// Send the email
if err := sendEmail(subject, body, toEmail); err != nil {
log.Fatalf("Error sending email: %v", err)
}
log.Println("Email sent successfully")
}
|
3. 配置 SMTP 服务器
在 sendEmail
函数中,我们配置了 SMTP 服务器的地址、端口、用户名和密码。请根据你使用的邮件服务提供商的要求更新这些值。以下是常见邮件服务提供商的配置示例:
-
Gmail:
- SMTP 服务器:
smtp.gmail.com
- 端口: 587(TLS)或 465(SSL)
- 用户名: 你的 Gmail 地址
- 密码: 你的 Gmail 密码(注意,可能需要生成应用专用密码)
-
Outlook/Hotmail:
- SMTP 服务器:
smtp.office365.com
- 端口: 587(TLS)
- 用户名: 你的 Outlook 地址
- 密码: 你的 Outlook 密码
-
SendGrid:
- SMTP 服务器:
smtp.sendgrid.net
- 端口: 587(TLS)
- 用户名:
apikey
- 密码: 你的 SendGrid API 密钥
4. 运行程序
将上述代码保存到一个名为 main.go
的文件中。然后在终端中运行:
如果一切配置正确,程序会发送一封测试邮件到指定的收件人邮箱。
注意事项
- 安全性: 直接在代码中写入敏感信息(如邮件用户名和密码)并不安全。在生产环境中,应该使用环境变量或安全的配置管理工具来管理这些信息。
- 邮件服务提供商限制: 一些邮件服务提供商可能会限制从不安全应用程序发送邮件,或要求额外的安全设置(如应用专用密码、OAuth2 认证等)。
- 错误处理: 上述代码处理了邮件发送中的错误,但在实际应用中,你可能需要更详细的错误处理和日志记录。
这样,你就有了一个基本的 Go 语言邮件发送功能示例。根据你的需求,你可以扩展功能,如支持 HTML 邮件、附件等。