отправка электронной почты с SMTP идти с Chanel - PullRequest
0 голосов
/ 26 сентября 2019

Как вы используете канал и goroutine для отправки электронной почты с gomail?

мой код вроде этого

  ch := make(chan *gomail.Message, 10)

   // Use the channel in your program to send emails.
   m := gomail.NewMessage()
   m.SetHeader("From", "myemail@gmail.com")
   m.SetHeader("To", "to@mail.com")
   m.SetHeader("Subject", "Hello!")
   m.SetBody("text/html", "Hello <b>Holaaa</b> and <I>test</i>!")

   ch <- m

   go func() {
      d := gomail.NewDialer("smtp.gmail.com", 465, "myemail@gmail.com", "password")

      var s gomail.SendCloser

      var err error
      open := false
      for {
         select {
         case m, ok := <-ch:
            if !ok {
               return
            }
            if !open {
               if s, err = d.Dial(); err != nil {
                  panic(err)
               }
               open = true
            }
            if err := gomail.Send(s, m); err != nil {
               log.Print(err)
            }
         // Close the connection to the SMTP server if no email was sent in
         // the last 30 seconds.
         case <-time.After(30 * time.Second):
            if open {
               if err := s.Close(); err != nil {
                  panic(err)
               }
               open = false
            }
         }
      }
   }()

}

 // Close the channel to stop the mail daemon.
   close(ch)

Вы используете такой канал?Или кто-то может исправить это, если это неправильно?

, когда я отправляю на домен gmail.com, мое письмо не попадает в их спам, но когда я отправляю письмо на другой домен Gmail, оно отправляется их спаму, яне знаю почему, есть ли какая-либо конфигурация, чтобы не отправлять спам на другие домены, кроме gmail?

...