Как отправить почту со своего домена
- Купил домен, условно
example.com. - Арендовал VDS на Ubuntu.
- Написал сайт
- Хочу, чтобы пользователи сайта могли получать письма от отправителя
[email protected]
Занимаюсь вопросом не первую неделю, чёткости нет абсолютно никакой. Где-то написано, что нужно поднять почтовый сервер на VDS (например, postfix). Где-то написано, что нужно использовать сторониие почтовые серверы (например, яндекс). Сколько ни старался, с postfix ничего не отправляется даже встроенной утилитой sendmail, не говоря уже об отправке почты средствами языка программирования. Подключение к яндексу - тоже окутано тайной. Добавил миллион DNS записей, зарегистрировался в яндекс.коннекте, добавил туда домен, все проверки прошёл.
В общем - как отправить почту на любой почтовый адрес любым протоколом (smtp, imap, pop) со своего домена из языка программирования Golang?
Ответы (1 шт):
Если хочется отправлять через sendmail с консоли, то нужно sendmail'у подсказать, какой у Вас адрес отправителя. Есть классическая инструкция - https://tldp.org/HOWTO/Sendmail-Address-Rewrite-3.html. Если супер кратко - нужно настроить файл /etc/mail/genericsdomain (где вписать Ваш домен) и /etc/mail/genericstable, что бы sendmail знал, от какого имени слать письмо.
Теперь в го. Попробуйте такой код
package main
import (
"fmt"
"net/smtp"
)
func main() {
// Ваша почта и пароль
from := "[email protected]"
password := "<Email Password>"
// кому шлем письмо.
to := []string{
"[email protected]",
}
// настройки smtp сервера.
smtpHost := "smtp.gmail.com"
smtpPort := "587"
// Собственно само сообщение
message := []byte("This is a test email message.")
// логинимся на севере
auth := smtp.PlainAuth("", from, password, smtpHost)
// шлем письмо
err := smtp.SendMail(smtpHost+":"+smtpPort, auth, from, to, message)
if err != nil {
fmt.Println(err)
return
}
fmt.Println("Письмо ушло!")
}