How to Convert EML to PNG in Go

Cloudmersive
2 min readJul 15, 2021

--

Converting an email file to an image sounds like an easy process, right? If this is what you were thinking, you may receive a surprise when you get down to it programmatically — converting an EML file requires parsing, rendering, and more time than you should have to dedicate to this one task. In this quick tutorial, we will illustrate how you can use an API in Go to automatically convert an EML file to a PNG file, allowing you to simplify the operation and save yourself a headache.

Our first and only step is to input the target EML file and our API key into the following example code:

package mainimport (
"fmt"
"bytes"
"mime/multipart"
"os"
"path/filepath"
"io"
"net/http"
"io/ioutil"
)
func main() {url := "https://api.cloudmersive.com/convert/eml/to/png"
method := "POST"
payload := &bytes.Buffer{}
writer := multipart.NewWriter(payload)
file, errFile1 := os.Open("/path/to/file")
defer file.Close()
part1,
errFile1 := writer.CreateFormFile("inputFile",filepath.Base("/path/to/file"))
_, errFile1 = io.Copy(part1, file)
if errFile1 != nil {
fmt.Println(errFile1)
return
}
err := writer.Close()
if err != nil {
fmt.Println(err)
return
}
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "multipart/form-data")
req.Header.Add("Apikey", "YOUR-API-KEY-HERE")
req.Header.Set("Content-Type", writer.FormDataContentType())
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}

The API function will present you with an array of PNG images, one for each page. If you need to obtain an API key, you can do so by registering for a free account on the Cloudmersive website; this provides 800 calls/month across any of our APIs.

--

--

Cloudmersive
Cloudmersive

Written by Cloudmersive

There’s an API for that. Cloudmersive is a leader in Highly Scalable Cloud APIs.

No responses yet