Commit Graph

74 Commits (3d7b9ff7cb58cb608eeb7b35ef75e56c541fcd8f)

Author SHA1 Message Date
Manos Pitsidianakis 5842a63e37
melib: ignore Draft body if empty for multipart mail 5 years ago
Manos Pitsidianakis ad2a51891b
melib: print attachment name in Display for text/* 5 years ago
Manos Pitsidianakis 6ccb9d3d75
melib/src/email/address.rs: Fix invalid UTF8 panic
In StrBuilder::display there's an assumption that the string is valid utf-8 but if an email contains an invalid string inside the MIME encoded word part the conversion panics. Change it to a lossy UTF-8 conversion instead. Fixes #19

Reported-By: cycomanic
5 years ago
Manos Pitsidianakis 9afb636894
melib/email: fix whitespace duplication in mime encoding 5 years ago
Manos Pitsidianakis 33c1bf6558
Add consume newlines flag to phrase() 5 years ago
Manos Pitsidianakis 68007a0842
View decoded email source by default
Toggle between decoded/raw source with view_raw_source shortcut, default
M-r
5 years ago
Manos Pitsidianakis 6b7dea35dc
melib/parser: fix minor encoded word error 5 years ago
Manos Pitsidianakis 6afac835e0
melib/datetime: fix overflow panic on early date input 5 years ago
Manos Pitsidianakis 05b91f1c02
Remove text_processing
Unwrap text_processing into melib

In preparation for uploading meli as a separate crate on crates.io.
5 years ago
Manos Pitsidianakis 8b6ea8de9a
Remove ui crate
Merge ui crate with root crate.

In preparation for uploading `meli` as a separate crate on crates.io.

Workspace crates will need to be published as well and having a separate
`ui` crate and binary perhaps doesn't make sense anymore.
5 years ago
Manos Pitsidianakis 6a096dd405
Add missing copyright preambles 5 years ago
Manos Pitsidianakis 853fe14128
melib: fix two minor email parsing bugs
- windows-1250 encoding not being recognized
- spaces in Message-ID header messing up parsing '<' + msg-id + '>'
structure
5 years ago
Manos Pitsidianakis a365a846b8
Replace StackVec with smallvec::SmallVec
SmallVec has a less buggy and better implementation.
5 years ago
Manos Pitsidianakis c0ac643f05
melib: add datetime module
Datetime module adds POSIX time functions interface
5 years ago
Manos Pitsidianakis 6671fe926e
melib: don't treat missing end boundary as error
Don't treat missing end boundary as error in multipart attachments.

python3's nntplib seems to return MIME attachments with this property
5 years ago
Manos Pitsidianakis 8694278369
ui: add auto_choose_multipart_alternative
Choose text/html by default if text/plain is empty in
multipart/alternative attachments

This happens in some newsletters I've come upon
5 years ago
Manos Pitsidianakis 92826f982f
melib/attachments: add MultipartType::Related kind 5 years ago
Manos Pitsidianakis c23cc45edd
melib: fix test import not found 5 years ago
Manos Pitsidianakis 1ee8ef7a05
JMAP WIP #4 5 years ago
Manos Pitsidianakis 7732b851e6
melib: fix minor header parsing errors
- set_subject checked if last byte was control character instead of last
character. Characters can be multi-byte, duh.
- email::parser::date didn't provide for Date values that had -0000
instead of +0000 (that's a chrono requirement/bug)
5 years ago
Manos Pitsidianakis 81c70b0136
melib: small test cosmetic fixes 5 years ago
Manos Pitsidianakis e79d9aa1c2
melib/parser: parse quote-printable CRLF soft breaks
Check for CRLF soft breaks after checking for LF ones
5 years ago
Manos Pitsidianakis d048d8566d
ui: add format=flowed if text/plain att is the only one 5 years ago
Manos Pitsidianakis bb486ca9d8
melib: Remove quotes from addresses in email/parser.rs 5 years ago
Manos Pitsidianakis 3dfb2f4f2c
melib: fix out-of-bounds parser bug 5 years ago
Manos Pitsidianakis 58209d6f6b
Replace some panics with errors 5 years ago
Manos Pitsidianakis ce646abc7a
ui: add send confirmation dialog in compose tab
Confirm before sending mail
5 years ago
Manos Pitsidianakis 51628ac9d2
ui: move list_management mod to melib
list_management module includes some small functions to handle mailing
list metadata (List-* headers)
5 years ago
Manos Pitsidianakis 449a24d075
ui: ListActions changes
- Parse List-Post value like List-Unsubscribe: comma separated angle bracket limited list of <mailto:> or <url> values
- Check if List-Archive value is angle bracket delimited
5 years ago
Manos Pitsidianakis fc2d9a684d
melib/imap: set has_attachments based on BODYSTRUCTURE
fetch BODYSTRUCTURE along with ENVELOPE from server and set
has_attachments based on the MIME structure of the envelope.

Notes: BODYSTRUCTURE returns the MIME structure of the envelope without
the data, so if it includes a multipart/mixed it *should* have
attachments.
ENVELOPE returns basic headers of the message like Sender, Subject, Date
etc.
5 years ago
Manos Pitsidianakis 953c3aa9d0
melib: Add parameters field in ContentType::Text
Intending to add the option to set the parameter format=flowed in the
next commits
5 years ago
Manos Pitsidianakis 04e1137b36
melib: add "On ${date} ${author} wrote" heading in replies 5 years ago
Manos Pitsidianakis 56cda63c83
Fix some warnings 5 years ago
Manos Pitsidianakis dce1c39b48
ui: add mailcap support 5 years ago
Manos Pitsidianakis 06d99c7f92
ui: Add save attachment command
use as `save-attachment ATTACHMENT_INDEX PATH`
5 years ago
Manos Pitsidianakis a907b9c21d
Fix melib test errors 5 years ago
Manos Pitsidianakis e600b0252f
text_processing: add line_break method
In preparation for format=flowed support, add a line_break method in the
text_processing Trait, now renamed from Graphemes to TextProcessing.
5 years ago
Manos Pitsidianakis 098982015b
ui/conversations: show all participating addresses in entry
Show all unique From: values of addresses in thread entries in
Conversations
5 years ago
Manos Pitsidianakis 1a02491f04
ui/compose: add modification detection
Detect if modifications were done to the draft in the compose tab so
that we can ask for confirmation if user wants to quit an unsaved draft.
5 years ago
Manos Pitsidianakis 47d60f480a
Add path shell expansion to logging and attachments 5 years ago
Manos Pitsidianakis e35a93336a
Add GPG signing and sig verifying 5 years ago
Manos Pitsidianakis 250129665b
Pass attachment names through decoding
Attachment names in Content-Type parameters can be encoded (eg
=?UTF-8...), so try decoding with phrase() first
5 years ago
Manos Pitsidianakis 68c40a2920
melib: return Result with error when an IO operation fails
Don't unwrap anything because this might be temporary, for example a
short IMAP disconnection.
5 years ago
Manos Pitsidianakis c44056a9ff
melib: fix bug in parser::parts
At a certain point when expecting a line terminator parts() checks for
'\n' but not '\r\n'. This resulted in all multipart attachments coming
from b"\r\n" sources like IMAP having only one part when parsed.
5 years ago
Manos Pitsidianakis 91ae539de1
Small fixes 5 years ago
Manos Pitsidianakis f27b815aa7
Add verification of GPG signed messages 5 years ago
Manos Pitsidianakis 9305e543cf
melib: add a `body` field to Attachment
Attachment needs to know the range of bytes where the body part of the
attachment is located. The Attachment.raw field contains the entire
attachment, headers and body. The new Attachment.body fields contains a
`StrBuilder` which contains the offset and length of the body part inside
`raw`.
5 years ago
Manos Pitsidianakis 6e75160b70
melib: turn unicode algos and backends into features 5 years ago
Manos Pitsidianakis f066f35410
melib: add get_tags to support subaddressing 5 years ago
Manos Pitsidianakis bee1502499
melib: make References public 5 years ago