Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goSpMlRc 272 of 280 menu
◀ ▶

Несколько получателей в Go

Одно письмо можно адресовать сразу нескольким ящикам. В вызов отправки вторым списком идет срез строк с полными адресами, и сервер передаст копию каждому из них.

В тексте сообщения заголовок с получателями должен перечислять те же адреса через запятую. Расхождение между срезом в коде и строкой в заголовке путает приемник и отчеты о доставке.

Отправим одно письмо двум адресатам:

package main import ( "fmt" "log" "net/smtp" ) func main() { addr := "127.0.0.1:1025" from := "team@example.com" to := []string{ "alice@example.com", "bob@example.com", } msg := []byte( "From: team@example.com\r\n" + "To: alice@example.com, bob@example.com\r\n" + "Subject: sync\r\n" + "\r\n" + "meeting at noon", ) err := smtp.SendMail(addr, nil, from, to, msg) if err != nil { log.Fatal(err) } fmt.Println("sent") }

Порядок адресов в заголовке может совпадать с порядком в срезе, так проще сверять код и текст письма. Для трех получателей правило то же: три элемента среза и три адреса через запятую в одной строке To.

Список можно собрать в переменную и подставить в заголовок через склеивание:

package main import ( "fmt" "log" "net/smtp" "strings" ) func main() { addr := "127.0.0.1:1025" from := "list@example.com" to := []string{ "one@example.com", "two@example.com", "three@example.com", } headerTo := strings.Join(to, ", ") msg := []byte( "From: list@example.com\r\n" + "To: " + headerTo + "\r\n" + "Subject: bulk\r\n" + "\r\n" + "shared update", ) err := smtp.SendMail(addr, nil, from, to, msg) if err != nil { log.Fatal(err) } fmt.Println("sent") }

Даны адреса:

recipients := []string{ "east@example.com", "west@example.com", }

Сформируйте заголовок To из recipients, отправьте письмо с темой "route" и телом "go" от "hub@example.com" на "127.0.0.1:1025".

В срезе два адреса, а в заголовке To указан только первый. Скажите, чем рискован такой вариант для второго получателя.

Даны адреса:

to := []string{"a@example.com", "b@example.com", "c@example.com"}

Запишите, как должна выглядеть одна строка заголовка To для этого среза.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить