@VadimRublev
Go, front-end (ванильный).

Почему при отправке письма выдает ошибку?

Почему выдает ошибку "wrong host name"? Одинаково для https://smtp.mail.ru:25 и smtp.mail.ru:25. Хост срисован с работающего мейла.
from := os.Getenv("myMail@mail.ru")
password := os.Getenv("myPass")
toList := []string{"mailAdr@mail.ru"}
host := "https://smtp.mail.ru:25"
bodyMsg := []byte("Hello geeks!!!")
auth := smtp.PlainAuth("", from, password, host)
err := smtp.SendMail(host, auth, from, toList, bodyMsg)

Отправляю с локального TLS-сервера.
  • Вопрос задан
  • 124 просмотра
Решения вопроса 1
EvgenyMamonov
@EvgenyMamonov Куратор тега Go
Senior software developer, system architect
Подозреваю, что ошибка в этой строке, у вас указывается порт (:25), надо его убрать.
// у вас host = "https://smtp.mail.ru:25", а должен быть "smtp.mail.ru"
auth := smtp.PlainAuth("", from, password, host)


На сколько я вижу вы разбираете пример из официального пакета https://pkg.go.dev/net/smtp
Добавил туда пару комментариев
import (
	"log"
	"net/smtp"
)

func main() {
	// Set up authentication information.
        // тут порт не указан, скорее всего ругается именно в этой строке
	auth := smtp.PlainAuth("", "user@example.com", "password", "mail.example.com")

	// Connect to the server, authenticate, set the sender and recipient,
	// and send the email all in one step.
	to := []string{"recipient@example.net"}
	msg := []byte("To: recipient@example.net\r\n" +
		"Subject: discount Gophers!\r\n" +
		"\r\n" +
		"This is the email body.\r\n")
        // тут порт указан, т.е. host:port, но не указывается протокол типа https, тут протокол SMTP
	err := smtp.SendMail("mail.example.com:25", auth, "sender@example.org", to, msg)
	if err != nil {
		log.Fatal(err)
	}
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@PapaStifflera
Родился, вырос...
Потому, что хост - это smtp.mail.ru
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы