@ian.heidenreich
Для отправки письма с вложением на языке Go вы можете использовать пакет "net/smtp" для установления соединения с почтовым сервером и отправки письма через протокол SMTP, а также пакет "mime/multipart" для создания многочастного сообщения (multipart message) с вложениями.
Пример кода для отправки письма с вложением:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
package main import ( "net/smtp" "net/mail" "net/textproto" "mime/multipart" "mime" "os" ) func main() { // Установление соединения с почтовым сервером auth := smtp.PlainAuth("", "ваш_email@домен.com", "ваш_пароль", "smtp.домен.com") conn, err := smtp.Dial("smtp.домен.com:587") if err != nil { panic(err) } defer conn.Close() // Определение отправителя, получателя и темы письма from := mail.Address{Name: "Отправитель", Address: "ваш_email@домен.com"} to := mail.Address{Name: "Получатель", Address: "email_получателя@домен.com"} subject := "Тема письма" // Создание многочастного сообщения с вложениями msg := multipart.NewMixedWriter(" ") msg.SetBoundary("myboundary") // Добавление текстовой части письма text := msg.CreatePart(textproto.MIMEHeader{}) text.Set("Content-Type", "text/plain; charset=utf-8") text.Set("Content-Transfer-Encoding", "quoted-printable") text.Set("Content-Disposition", "inline") text.Write([]byte("Текст сообщения")) // Добавление вложения attachment, err := os.Open("путь_к_вложению") if err != nil { panic(err) } defer attachment.Close() fileInfo, err := attachment.Stat() if err != nil { panic(err) } attachmentWriter, err := msg.CreatePart(textproto.MIMEHeader{ "Content-Disposition": {"attachment; filename=" + fileInfo.Name()}, "Content-Type": {mime.TypeByExtension(filepath.Ext(fileInfo.Name()))}}) if err != nil { panic(err) } _, err = io.Copy(attachmentWriter, attachment) if err != nil { panic(err) } // Отправка письма body := msg.Bytes() err = smtp.SendMail("smtp.домен.com:587", auth, from.Address, []string{to.Address}, body) if err != nil { panic(err) } } |
Здесь вам нужно заменить следующие данные на свои:
@ian.heidenreich
ении - путь к файлу, который вы хотите прикрепить к письму.
Не забудьте также импортировать пакеты "io", "path/filepath" и "os". Возможно, вам потребуется установить дополнительные зависимости для корректной работы кода. Кроме того, убедитесь, что почтовый сервер поддерживает SMTP-аутентификацию и работает с указанным портом.
После замены данных на свои, скомпилируйте и запустите код. После успешного выполнения кода, письмо с вложением должно быть отправлено на указанный адрес получателя.
Если у вас возникнут проблемы или вопросы, не стесняйтесь обращаться за помощью.