当然,下面是一个用 Go 语言发送电子邮件的详细示例。我们将使用 gomail 包来实现邮件发送功能。这里的示例展示了如何配置邮件客户端,创建邮件,并发送邮件。

1. 安装 gomail

首先,我们需要安装 gomail 包。打开终端并运行以下命令:

1
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
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 的文件中。然后在终端中运行:

1
go run main.go

如果一切配置正确,程序会发送一封测试邮件到指定的收件人邮箱。

注意事项

  • 安全性: 直接在代码中写入敏感信息(如邮件用户名和密码)并不安全。在生产环境中,应该使用环境变量或安全的配置管理工具来管理这些信息。
  • 邮件服务提供商限制: 一些邮件服务提供商可能会限制从不安全应用程序发送邮件,或要求额外的安全设置(如应用专用密码、OAuth2 认证等)。
  • 错误处理: 上述代码处理了邮件发送中的错误,但在实际应用中,你可能需要更详细的错误处理和日志记录。

这样,你就有了一个基本的 Go 语言邮件发送功能示例。根据你的需求,你可以扩展功能,如支持 HTML 邮件、附件等。