登录
首页 >  Golang >  Go问答

Golang邮件发送操作超时

来源:stackoverflow

时间:2024-02-18 13:45:18 369浏览 收藏

你在学习Golang相关的知识吗?本文《Golang邮件发送操作超时》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

问题内容

我需要向 708 家公司发送包含登录名和密码的电子邮件,以便在我公司的新网络应用程序上进行授权,他们可以在其中查看与我们公司合作的统计数据和其他信息。问题是我们使用的 smtp 主机在每分钟发送 30 封电子邮件时设置了瓶颈。我真的想不出如何处理这个问题的好方法。

我可能需要将 goroutine 与 for 循环一起使用。

import "gopkg.in/gomail.v2"

 const (
    FROM      = "[email protected]"
    PASSWORD  = "bar"
    SMTP_HOST = "smtp.google.com"
    SMTP_PORT = 465
 )

 type SendEmail struct {
    To      string
    Subject string
    Msg     string
 }

 func (se *SendEmail) Send() error{
    m := gomail.NewMessage()
    m.SetHeader("From", FROM)
    m.SetHeader("To", se.To)
    m.SetHeader("Subject", se.Subject)
    m.SetBody("text/html", se.Msg)
    d := gomail.NewDialer(SMTP_HOST, SMTP_PORT, FROM, PASSWORD)

    // Send the email
    if err := d.DialAndSend(m); err != nil {
        return err
    }

    return nil
 }

 type Company struct{
  Email string
  Login string
  Password string
 }

 func SendNotificartion(companys []Company){
  // Send 30 mail every minute
  
  for _, company := range companys {
   var send SendEmail
   send.To = company.Email
   send.Subject = "Some subject"
   send.Msg = fmt.Sprintf("Your login:%s and password:%s", company.Login, company.Password)

   if err := send.Send(); err != nil{
    log.Println(err)
   }
  }
 }

正确答案


您可以在此暂停 1 分钟,然后再发送 30 包

func SendNotificartion(companys []Company){
  // Send 30 mail every minute
  var counter = 0
  for _, company := range companys {
   var send SendEmail
   send.To = company.Email
   send.Subject = "Some subject"
   send.Msg = fmt.Sprintf("Your login:%s and password:%s", company.Login, company.Password)

   if err := send.Send(); err != nil{
    log.Println(err)
   }
   counter++
   if counter == 30 {
       counter = 0
       time.Sleep(1 * time.Minute)
   }
  }

本篇关于《Golang邮件发送操作超时》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>