Как отправить письмо с вложениями в Go

Я нашел эту библиотеку и сумел отправить вложение в пустом электронном письме, но не смог объединить текст и вложения.

https://github.com/sloonz/go-mime-message

Как это можно сделать?

Ответы на вопрос(4)

GoMail для этого. Он поддерживает вложения, а также составные электронные письма и кодирование не-ASCII символов. Это хорошо документировано и проверено.

Вот пример:

package main

func main() {
    m := gomail.NewMessage()
    m.SetHeader("From", "[email protected]")
    m.SetHeader("To", "[email protected]", "[email protected]")
    m.SetAddressHeader("Cc", "[email protected]", "Dan")
    m.SetHeader("Subject", "Hello!")
    m.SetBody("text/html", "Hello <b>Bob</b> and <i>Cora</i>!")
    m.Attach("/home/Alex/lolcat.jpg")

    d := gomail.NewPlainDialer("smtp.example.com", 587, "user", "123456")

    // Send the email to Bob, Cora and Dan.
    if err := d.DialAndSend(m); err != nil {
        panic(err)
    }
}

бщения MIME.

Поэтому я предлагаю вам просто

create a MultipartMessage

set your text in the fist part as a TextMessage (with "Content-Type", "text/plain")

add your attachements as parts using AddPart.

 07 июн. 2017 г., 11:39
Подскажите, пожалуйста, на какую библиотеку вы ссылаетесь?
 Santiago Corredoira18 июн. 2012 г., 17:14
Это то, что я пытаюсь, но по какой-то причине я не могу заставить его работать. Я создал проблему, объясняя детали здесь:github.com/sloonz/go-mime-message/issues/1

Я предпочитаю использоватьhttps://github.com/jordan-wright/email для электронной почты. Он поддерживает вложения.

Email for humans

The email package is designed to be simple to use, but flexible enough so as not to be restrictive. The goal is to provide an email interface for humans.

The email package currently supports the following:

From, To, Bcc, and Cc fields Email addresses in both "[email protected]" and "First Last " format Text and HTML Message Body Attachments Read Receipts Custom headers More to come!
 22 июн. 2015 г., 12:11
это наверное самое простое: 3
Решение Вопроса

https://github.com/scorredoira/email

Использование очень просто:

m := email.NewMessage("Hi", "this is the body")
m.From = "[email protected]"
m.To = []string{"[email protected]"}

err := m.Attach("picture.png")
if err != nil {
    log.Println(err)
}

err = email.Send("smtp.gmail.com:587", smtp.PlainAuth("", "user", "password", "smtp.gmail.com"), m)
 05 апр. 2016 г., 23:49
Gmail больше не позволяет этого.
 13 окт. 2016 г., 06:05
@qed вам нужно зайти в настройки своего аккаунта Google и в разделе приложения / безопасность включить небезопасный доступ к приложениям. Я настоятельно рекомендую для этой цели одноразовую учетную запись электронной почты. Если вы регистрируетесь на gmail, и вы моложе определенного возраста - мне кажется, 16 или 18 лет - вам не нужно указывать предыдущий адрес электронной почты при регистрации.
 08 сент. 2016 г., 22:43
@Qed, я только что проверил с Gmail, и он работает нормально.
 23 июл. 2018 г., 16:44
m.From линия больше не работает, потому что m.From принимает только mail.Address. Сначала должен бытьmail.ParseAddress("[email protected]") чтобы вернуть * mail.Address, тогда он должен быть разыменован, чтобы быть переданнымm.From.

Ваш ответ на вопрос