# html2text
[![Documentation ](https://godoc.org/github.com/jaytaylor/html2text?status.svg )](https://godoc.org/github.com/jaytaylor/html2text)
[![Build Status ](https://travis-ci.org/jaytaylor/html2text.svg?branch=master )](https://travis-ci.org/jaytaylor/html2text)
[![Report Card ](https://goreportcard.com/badge/github.com/jaytaylor/html2text )](https://goreportcard.com/report/github.com/jaytaylor/html2text)
### Converts HTML into text of the markdown-flavored variety
## Introduction
Ensure your emails are readable by all!
Turns HTML into raw text, useful for sending fancy HTML emails with an equivalently nicely formatted TXT document as a fallback (e.g. for people who don't allow HTML emails or have other display issues).
html2text is a simple golang package for rendering HTML into plaintext.
There are still lots of improvements to be had, but FWIW this has worked fine for my [basic] HTML-2-text needs.
It requires go 1.x or newer ;)
## Download the package
```bash
go get jaytaylor.com/html2text
```
## Example usage
```go
package main
import (
"fmt"
"jaytaylor.com/html2text"
)
func main() {
inputHTML := `
< html >
< head >
< title > My Mega Service< / title >
< link rel = \"stylesheet \" href = \"main.css \">
< style type = \"text/css \"> body { color : #fff ; }</ style >
< / head >
< body >
< div class = "logo" >
< a href = "http://jaytaylor.com/" > < img src = "/logo-image.jpg" alt = "Mega Service" / > < / a >
< / div >
< h1 > Welcome to your new account on my service!< / h1 >
< p >
Here is some more information:
< ul >
< li > Link 1: < a href = "https://example.com" > Example.com< / a > < / li >
< li > Link 2: < a href = "https://example2.com" > Example2.com< / a > < / li >
< li > Something else< / li >
< / ul >
< / p >
< table >
< thead >
< tr > < th > Header 1< / th > < th > Header 2< / th > < / tr >
< / thead >
< tfoot >
< tr > < td > Footer 1< / td > < td > Footer 2< / td > < / tr >
< / tfoot >
< tbody >
< tr > < td > Row 1 Col 1< / td > < td > Row 1 Col 2< / td > < / tr >
< tr > < td > Row 2 Col 1< / td > < td > Row 2 Col 2< / td > < / tr >
< / tbody >
< / table >
< / body >
< / html > `
text, err := html2text.FromString(inputHTML, html2text.Options{PrettyTables: true})
if err != nil {
panic(err)
}
fmt.Println(text)
}
```
Output:
```
Mega Service ( http://jaytaylor.com/ )
******************************************
Welcome to your new account on my service!
******************************************
Here is some more information:
* Link 1: Example.com ( https://example.com )
* Link 2: Example2.com ( https://example2.com )
* Something else
+-------------+-------------+
| HEADER 1 | HEADER 2 |
+-------------+-------------+
| Row 1 Col 1 | Row 1 Col 2 |
| Row 2 Col 1 | Row 2 Col 2 |
+-------------+-------------+
| FOOTER 1 | FOOTER 2 |
+-------------+-------------+
```
## Unit-tests
Running the unit-tests is straightforward and standard:
```bash
go test
```
# License
Permissive MIT license.
## Contact
You are more than welcome to open issues and send pull requests if you find a bug or want a new feature.
If you appreciate this library please feel free to drop me a line and tell me! It's always nice to hear from people who have benefitted from my work.
Email: jay at (my github username).com
Twitter: [@jtaylor ](https://twitter.com/jtaylor )
# Alternatives
https://github.com/k3a/html2text - Lightweight