gpt4 book ai didi

go - 在 goroutine 中发送电子邮件

转载 作者:数据小太阳 更新时间:2023-10-29 03:28:57 26 4
gpt4 key购买 nike

我正在尝试使用 golang 编写身份验证系统。

用户注册成功后,会向用户发送确认邮件。

我想在 goroutine 中执行发送邮件功能。发送邮件功能的代码如下所示

func Send(email, link string) error {

// Connect to the remote SMTP server.
c, err := smtp.Dial("127.0.0.1:2525")
if err != nil {
return err
}
// Set the sender and recipient.
c.Mail("sender@example.org")
c.Rcpt(email)
// Send the email body.
wc, err := c.Data()
if err != nil {
return err
}
defer wc.Close()
buf := bytes.NewBufferString("Please confirm this email " + link)
if _, err = buf.WriteTo(wc); err != nil {
return err
}
return nil
}

如果这里 goroutine 将发生错误并且响应已经完成(用户收到响应),那么我该如何处理错误?

最佳答案

我假设:

  1. 一个人注册一个帐户
  2. 您向他们发送一封带有激活链接的确认电子邮件
  3. 一旦他们点击链接,他们的帐户现在就可以“做事”

如果是这样的话:

您可能应该将此发送邮件操作的失败或成功记录到某种有状态存储(SQL DB、mongo、leveldb 等),然后当用户登录(或导航到页面)时您可以通知他们他们的帐户仍然需要确认(假设发送操作或点击确认链接的 URL 从未发生过)并提出重新发送电子邮件。

另一种选择是对提交电子邮件地址做出响应,等待电子邮件发送(不要启动 goroutine),但如果你有很多注册,这可能无法很好地扩展......而且你无论如何,仍然需要维护点击激活链接的人的状态。所以第一个选项更好。

关于go - 在 goroutine 中发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26839709/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com