ainsleyclark / go-mail

📧 A cross platform mail driver for GoLang. Featuring Mailgun, Postal, Postmark, SendGrid, SparkPost & SMTP.
MIT License
179 stars 16 forks source link

multipart email is not properly formatted when using smtp driver #21

Open kaptinlin opened 2 years ago

kaptinlin commented 2 years ago

Describe the bug When send smtp email with both html and plain text, the Content-Type is not properly set.

To Reproduce

cfg := mail.Config{
    URL:         "smtp.gmail.com",
    FromAddress: "sender@example.com",
    FromName:    "Gopher",
    Password:    "my-password",
    Port:        587,
}

mailer, err := drivers.NewSMTP(cfg)
if err != nil {
    log.Fatalln(err)
}

tx := &mail.Transmission{
    Recipients: []string{"recipient@example.com"},
    Subject:    "Multipart Email Example",
    HTML:       "<h1>This is the HTML Section!</h1>",
    PlainText:  "Plain text email goes here!",
}

result, err := mailer.Send(tx)

Expected behavior

From: sender@example.com
To: recipient@example.com
Subject: Multipart Email Example
Content-Type: multipart/alternative; boundary="boundary-string"

--your-boundary
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Plain text email goes here!

--boundary-string
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

<h1>This is the HTML Section!</h1>

--boundary-string--

There is a article for Multipart MIME Email Guide. And go-simple-email seems work well with it.

ainsleyclark commented 2 years ago

@KaptinLin can you confirm below?

MIME-Version: 1.0
Content-Type: text/html; charset=UTF-8; boundary=be784b8c49238b246169a6a634ade1e42e1054dd03723c9f72bad8267a2e
Subject: Subject
To: hello@gmail.com

--be784b8c49238b246169a6a634ade1e42e1054dd03723c9f72bad8267a2e
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8

Hey!

--be784b8c49238b246169a6a634ade1e42e1054dd03723c9f72bad8267a2e
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset=UTF-8

<h1>Hey!</h1>

--be784b8c49238b246169a6a634ade1e42e1054dd03723c9f72bad8267a2e--

And for mutlipart:

MIME-Version: 1.0
Content-Type: multipart/alternative; boundary=6564f3879c8a3d3757dcd42835c1bb64b994636889a5908e42f83dcd5239
Subject: Subject
To: hello@gmail.com

--6564f3879c8a3d3757dcd42835c1bb64b994636889a5908e42f83dcd5239
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8

Hey!

--6564f3879c8a3d3757dcd42835c1bb64b994636889a5908e42f83dcd5239
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset=UTF-8

<h1>Hey!</h1>

--6564f3879c8a3d3757dcd42835c1bb64b994636889a5908e42f83dcd5239