From: RedLobster999 <32234954+RedLobster999@users.noreply.github.com> Date: Tue, 1 Mar 2022 14:28:18 +0000 (+0700) Subject: send plain-text in email along with html (#2107) X-Git-Url: http://these/git/%7B%60%24%7BwebArchiveUrl%7D/%22%7B%7D/%24%7B%60data:application/static/%7B%60https:/README.ja.md?a=commitdiff_plain;h=348077c3de9fe0137894d9d3845450085c6ef30e;p=lemmy.git 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 --- diff --git a/Cargo.lock b/Cargo.lock index 706994b6..299a1866 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1493,6 +1493,17 @@ dependencies = [ "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]] name = "html5ever" version = "0.25.1" @@ -2122,6 +2133,7 @@ dependencies = [ "doku", "encoding", "futures", + "html2text", "http", "itertools", "jsonwebtoken", @@ -4265,6 +4277,12 @@ version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b" +[[package]] +name = "unicode-width" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" + [[package]] name = "unicode-xid" version = "0.1.0" diff --git a/crates/utils/Cargo.toml b/crates/utils/Cargo.toml index 14d4e7c0..4f9e68f1 100644 --- a/crates/utils/Cargo.toml +++ b/crates/utils/Cargo.toml @@ -45,4 +45,5 @@ webpage = { version = "1.4.0", default-features = false, features = ["serde"] } jsonwebtoken = "7.2.0" doku = "0.10.2" uuid = { version = "0.8.2", features = ["serde", "v4"] } -encoding = "0.2.33" \ No newline at end of file +encoding = "0.2.33" +html2text = "0.2.1" \ No newline at end of file diff --git a/crates/utils/src/email.rs b/crates/utils/src/email.rs index 69c0fb17..a52ed405 100644 --- a/crates/utils/src/email.rs +++ b/crates/utils/src/email.rs @@ -1,4 +1,5 @@ use crate::{settings::structs::Settings, LemmyError}; +use html2text; use lettre::{ message::{header, Mailbox, MultiPart, SinglePart}, 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() .from( email_config @@ -58,7 +62,7 @@ pub fn send_email( .singlepart( SinglePart::builder() .header(header::ContentType::TEXT_PLAIN) - .body(html.to_string()), + .body(plain_text), ) .multipart( MultiPart::related().singlepart(