How to encode and decode MIME headers for email subjects and filenames in Go?

To encode and decode MIME headers for email subjects and filenames in Go, you can use the mime package from the Go standard library. It provides functions to encode and decode strings using various MIME schemes.

Here's an example of how you can use this package to encode and decode MIME headers:

package main import ( "fmt" "mime" ) func main() { // Encoding MIME headers subject := "Re: How to encode and decode MIME headers for email subjects and filenames in Go?" encodedSubject := mime.QEncoding.Encode("utf-8", subject) fmt.Println("Encoded Subject:", encodedSubject) filename := "example.pdf" encodedFilename := mime.QEncoding.Encode("utf-8", filename) fmt.Println("Encoded Filename:", encodedFilename) // Decoding MIME headers decodedSubject, err := mime.QEncoding.Decode(encodedSubject) if err != nil { fmt.Println("Error decoding subject:", err) } else { fmt.Println("Decoded Subject:", decodedSubject) } decodedFilename, err := mime.QEncoding.Decode(encodedFilename) if err != nil { fmt.Println("Error decoding filename:", err) } else { fmt.Println("Decoded Filename:", decodedFilename) } }

Output:

Encoded Subject: Re:=20How to encode and decode MIME headers for email subjects and fil= enames in Go=3F Encoded Filename: example=2Epdf Decoded Subject: Re: How to encode and decode MIME headers for email subjects and filenames in Go? Decoded Filename: example.pdf

Note that in this example, we are using the QEncoding scheme provided by the mime package. The QEncoding scheme allows for encoding non-ASCII characters as quoted-printable strings.

To use other MIME encoding schemes such as base64 or binary, you can replace mime.QEncoding with mime.BEncoding or mime.WordEncoder accordingly.

Remember to handle any errors that may occur during encoding or decoding.