Sth. like ``` var buf bytes.Buffer buf.Reset() fh, err := os.Open("path-to-eml") if err != nil { return err } _, err = io.Copy(&buf, fh) fh.Close() if err != nil { return err } email, err := parsemail.Parse(bytes.NewReader(buf.Bytes())) if err != nil { // handle error return err } d := gomail.NewDialer(...) sc, err := d.Dial() if err != nil { return err } return sc.Send(email.From, []string{email.To}, buf) ```
Or if you don't want to read the whole email into memory (but I think parsemail already does it, unlike the standard net/mail), you could create a little helper: ``` type copyWriterTo struct { r io.Reader } func (cw copyWriterTo) WriteTo(w io.Writer) (int64, err) { return io.Copy(w, cw.r) } ``` and use it in `sc.Send`, instead of `buf`. Tamás Gulácsi a következőt írta (2020. szeptember 14., hétfő, 6:17:42 UTC+2): > Use DialSender returned by gomail.Dial. > You don't need the parsed message for it, just the from and to addresses, > and write the contents of the .eml file into the WriterTo as is. > > sandip bait a következőt írta (2020. szeptember 14., hétfő, 1:06:50 UTC+2): > >> I am using Standard *gomail <https://github.com/go-gomail/gomail>* package >> for sending mails in Golang. The mail generation part is happing from some >> other component which i am storing it in a particular location (i.e >> */path/sample.eml* file). And hence , i have pre-cooked mail body in >> .EML file which i just want process as a new mail. I am able to put/parse >> the .EML content by using the *parsemail >> <https://github.com/DusanKasan/parsemail>* package of *DusanKasan*. >> There are so many custom headers which i have already set in raw >> *sample.eml* file content which i want to send. It will be really >> helpful if i get an example code saying just pass *.eml* file as a input >> so that mail body will generate/render based on *.eml* file content. >> >> You can fine sample EML content string on *.EML >> <https://play.golang.org/p/mlDANqTLmj9>*Here is my basic mail sending >> code using *gomail <https://github.com/go-gomail/gomail>* >> >> package.m := gomail.NewMessage() >> m.SetHeader("From", "al...@example.com") >> m.SetHeader("To", "b...@example.com", "co...@example.com") >> m.SetAddressHeader("Cc", "d...@example.com", "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.NewDialer("smtp.example.com", 587, "user", "123456") // >> Send the email to Bob, Cora and Dan. >> if err := d.DialAndSend(m); err != nil { panic(err) } >> >> Here is my eml parsing code using parsemail *parsemail >> <https://github.com/DusanKasan/parsemail>* package >> >> var reader io.Reader // this reads an email message >> email, err := parsemail.Parse(reader) // returns Email struct and error >> if err != nil { // handle error } fmt.Println(email.Subject) >> fmt.Println(email.From) >> fmt.Println(email.To) >> fmt.Println(email.HTMLBody) >> >> Thanks & Regards, >> >> -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/b36be460-057f-4711-bdf0-79265b6623d0n%40googlegroups.com.