Как отправить письмо с помощью golang?

Для отправки письма с использованием Golang мы можем воспользоваться стандартной библиотекой net/smtp. Следуя нижеуказанным шагам, вы сможете легко отправлять письма из своей программы на языке Golang.

1. Импортирование необходимых пакетов:

   import (
     "net/smtp"
     "strings"
   )

2. Определение функции отправки письма:

   func sendEmail(senderEmail string, senderPassword string, recipientEmail string, subject string, body string) error {
     // Установление соединения с сервером SMTP
     auth := smtp.PlainAuth("", senderEmail, senderPassword, "smtp.gmail.com")

     // Формирование заголовков письма
     headers := make(map[string]string)
     headers["From"] = senderEmail
     headers["To"] = recipientEmail
     headers["Subject"] = subject

     var message string
     for key, value := range headers {
       message += fmt.Sprintf("%s: %srn", key, value)
     }
     message += "rn" + body

     // Отправка письма
     err := smtp.SendMail("smtp.gmail.com:587", auth, senderEmail, []string{recipientEmail}, []byte(message))
     if err != nil {
       return err
     }
     return nil
   }

3. Вызов функции отправки письма:

   func main() {
     senderEmail := "[email protected]"
     senderPassword := "password"
     recipientEmail := "[email protected]"
     subject := "Тестовое письмо"
     body := "Привет, это тестовое письмо."

     err := sendEmail(senderEmail, senderPassword, recipientEmail, subject, body)
     if err != nil {
       fmt.Println("Ошибка отправки письма:", err)
     } else {
       fmt.Println("Письмо успешно отправлено!")
     }
   }

Обратите внимание, что пример выше использует сервер SMTP Gmail ("smtp.gmail.com") и требует ввода учетных данных отправителя (адрес электронной почты и пароль). Пожалуйста, замените их соответствующими учетными данными почтового сервера, который вы хотите использовать.

Надеюсь, этот подробный ответ помог вам понять, как отправлять письма с помощью Golang с использованием библиотеки net/smtp. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их!