как я могу прикрепить файлы mp4 к почте с помощью golang (я использую gomail)
Вот код:
func sendMail() error{
m := gomail.NewMessage()
m.SetHeader("From", From)
m.SetHeader("To", "bacobas.f@gmail.com")
m.SetHeader("Subject", "Hello!")
m.SetBody("text/html", "Hello <b>Bob</b> and <i>Cora</i>!")
m.Attach("./video.mp4")
//m.Attach("./Autorizzazione.pdf")
d := gomail.NewDialer(SmtpHost, SmtpPort, From, PswFrom)
// Send the email to Bob, Cora and Dan.
if err := d.DialAndSend(m); err != nil {
return err
}
return nil}
Если прикрепить "Autorizzazione.pdf", все работает. Также, если я ничего не прикрепляю. Но если я попытаюсь прикрепить этот файл .mp4, вывод будетError: gomail: could not send email 1: write tcp <my LAN wi-fi ip address>:54988->142.250.147.109:587: wsasend: An existing connection was forcibly closed by the remote host.
Эта функция вызывается внутриHandleFunc()
на моем маленьком http-сервере, и возврат этой функции в основном «печатается» как возврат этого API
Может кто-то мне помочь, пожалуйста?
1 ответ
Следующий пример работает для вас?
Источник: Отправка электронной почты и вложений с помощью GO (Golang) с использованием SMTP, Gmail и OAuth2.
package gomail
import (
"errors"
"fmt"
"net/smtp"
)
var emailAuth smtp.Auth
func SendEmailSMTP(to []string, data interface{}, template string) (bool, error) {
emailHost := "smtp.gmail.com"
emailFrom := "yourEmail@gmail.com"
emailPassword := "yourEmailPassword"
emailPort := 587
emailAuth = smtp.PlainAuth("", emailFrom, emailPassword, emailHost)
emailBody, err := parseTemplate(template, data)
if err != nil {
return false, errors.New("unable to parse email template")
}
mime := "MIME-version: 1.0;\nContent-Type: text/plain; charset=\"UTF-8\";\n\n"
subject := "Subject: " + "Test Email" + "!\n"
msg := []byte(subject + mime + "\n" + emailBody)
addr := fmt.Sprintf("%s:%s", emailHost, emailPort)
if err := smtp.SendMail(addr, emailAuth, emailFrom, to, msg); err != nil {
return false, err
}
return true, nil
}