send plain-text in email along with html (#2107)

* send plain text in email along with html

* format the code using "cargo +nightly fmt"

Co-authored-by: kittiphat-kang <kittiphat.nu@easysunday.com>
This commit is contained in:
RedLobster999 2022-03-01 21:28:18 +07:00 committed by GitHub
parent 9f5183fe98
commit 348077c3de
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 25 additions and 2 deletions

18
Cargo.lock generated
View file

@ -1493,6 +1493,17 @@ dependencies = [
"regex", "regex",
] ]
[[package]]
name = "html2text"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a26379dcb715e237b96102a12b505c553e2bffa74bae2e54658748d298660ef1"
dependencies = [
"html5ever",
"markup5ever_rcdom",
"unicode-width",
]
[[package]] [[package]]
name = "html5ever" name = "html5ever"
version = "0.25.1" version = "0.25.1"
@ -2122,6 +2133,7 @@ dependencies = [
"doku", "doku",
"encoding", "encoding",
"futures", "futures",
"html2text",
"http", "http",
"itertools", "itertools",
"jsonwebtoken", "jsonwebtoken",
@ -4265,6 +4277,12 @@ version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b" checksum = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b"
[[package]]
name = "unicode-width"
version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
[[package]] [[package]]
name = "unicode-xid" name = "unicode-xid"
version = "0.1.0" version = "0.1.0"

View file

@ -46,3 +46,4 @@ jsonwebtoken = "7.2.0"
doku = "0.10.2" doku = "0.10.2"
uuid = { version = "0.8.2", features = ["serde", "v4"] } uuid = { version = "0.8.2", features = ["serde", "v4"] }
encoding = "0.2.33" encoding = "0.2.33"
html2text = "0.2.1"

View file

@ -1,4 +1,5 @@
use crate::{settings::structs::Settings, LemmyError}; use crate::{settings::structs::Settings, LemmyError};
use html2text;
use lettre::{ use lettre::{
message::{header, Mailbox, MultiPart, SinglePart}, message::{header, Mailbox, MultiPart, SinglePart},
transport::smtp::{authentication::Credentials, extension::ClientId}, transport::smtp::{authentication::Credentials, extension::ClientId},
@ -39,6 +40,9 @@ pub fn send_email(
) )
}; };
// the message length before wrap, 78, is somewhat arbritary but looks good to me
let plain_text = html2text::from_read(html.as_bytes(), 78);
let email = Message::builder() let email = Message::builder()
.from( .from(
email_config email_config
@ -58,7 +62,7 @@ pub fn send_email(
.singlepart( .singlepart(
SinglePart::builder() SinglePart::builder()
.header(header::ContentType::TEXT_PLAIN) .header(header::ContentType::TEXT_PLAIN)
.body(html.to_string()), .body(plain_text),
) )
.multipart( .multipart(
MultiPart::related().singlepart( MultiPart::related().singlepart(