Commit graph

658 commits

Author SHA1 Message Date
Alan Morgan 09d3de5e6f
parse raw message as ut8 lossy (#234)
Reading a message raw uses uses utf_lossy to ensure the message can be read
even if there is invalid utf8.
2021-10-23 17:23:25 +02:00
Clément DOUIN eaa83b71ef
notify cannot get body (#233)
* imap: fix notify cmd

* doc: update changelog
2021-10-23 00:46:21 +02:00
Clément DOUIN f0b2fd788d
remove error when empty subject (#232)
* msg: remove error when empty subject

* doc: update changelog
2021-10-23 00:25:34 +02:00
Clément DOUIN d9272917f5
clean msg flags, merge tpl entity in msg (#231)
* merge tpl entity into msg

* change envelope subject type to cow

* msg: fix save command when raw msg comes from stdin

* msg: clean flags
2021-10-23 00:17:24 +02:00
Igbanam Ogbuluijah 45aac9fbec
delete vim read buffers on list msgs (#224)
0.5.0 came with the amazing option of reading the mail in the same view.
The issue with this is, if you go back to the message list and read some
new mail, it opens a new pane to read the new mail. This change follows
the path of modern mail readers which have one pane to load the email in.

Technically, this change closes any open "Himalaya read message" pane
before creating a new one. This close-open should create the illusion of
having the same pane reload the content.

A possible extension of this would be to clear the contents of the pane,
and re-use the same pane to load the new message. A good time to go this
extension is if Himalaya chooses to use persistent connections to the
mail server.
2021-10-14 14:04:52 +02:00
Clément DOUIN 85f3ce8976
add mailbox handler tests (#225)
* make imap.fetch_mboxes return a Mboxes struct

* add mbox handler tests
2021-10-14 12:52:30 +02:00
Clément DOUIN 8af14734c3
improve mailbox structure (#223)
* split entities, remove manual serialization, add comments

* add mbox arg subbcmds test

* finalize mbox arg tests

* fix typos in comments

* add missing tests for entities

* rename fetch mbox imap fn
2021-10-13 20:48:42 +02:00
Clément DOUIN d21778c35e
improve text parts (#221) 2021-10-11 23:04:33 +02:00
Clément DOUIN 284929d5dc
add missing issue changelog v0.5.0 2021-10-11 00:37:52 +02:00
Clément DOUIN 767eee95f5
release v0.5.0 2021-10-11 00:06:46 +02:00
Clément DOUIN b7d068c729
improve folder struct + msg management (#217)
* make imap list and search return msg instead of fetch

* move imap logouts to main fn

* improve list command

* improve search command

* improve flags command

* improve template reply

* improve tpl forward command

* refactor tpl and msg reply/forward

* refactor copy, move and write commands

* refactor attachment command

* fix attachment part of copy and move commands

* fix send, save, read and mbox

* put back notify and watch commands

* fix msg encoding

* refactor edit choices, clean dead code

* fix attachment for write, reply and forward commands

* refactor config mod struct

* refactor project folder struct

* fix vim plugin (#215)
2021-10-10 22:58:57 +02:00
Igbanam Ogbuluijah 794860befe
Fix the message list bug (#216)
With the current version of Himalaya, the Vim front breaks because it
can't find headers.subject in the JSON output from Himalaya. The JSON
output today from Himalaya representing a message looks like so

```json
    {
      "uid": 12345,
      "flags": [],
      "subject": "Subject",
      "subject_len": 7,
      "sender": "Sender",
      "sender_len": 6,
      "date": "2020-12-11 06:38:19"
    },
```

This reverts some of the changes in b9a9d0e, but not all of them.
2021-10-10 09:10:37 +02:00
Paolo Barbolini 8f4718c057
Remove unused lettre_email crate (#209) 2021-09-29 22:32:59 +02:00
Clément DOUIN b9a9d0e687
fix vim msg list and read 2021-09-19 18:08:27 +02:00
Clément DOUIN 9931658ea3
review template, write and search commands 2021-09-19 17:21:42 +02:00
Clément DOUIN 079572666a
review reply command 2021-09-19 17:04:05 +02:00
Clément DOUIN 7a43bdd46e
review read command 2021-09-19 16:58:10 +02:00
Clément DOUIN d706a13e5e
review mailto command 2021-09-19 16:51:58 +02:00
Clément DOUIN ac75c1d37a
review move command 2021-09-19 16:48:09 +02:00
Clément DOUIN c7940f72ff
review mailboxes command 2021-09-19 16:42:45 +02:00
Clément DOUIN cebff51e5b
review list command 2021-09-19 16:41:02 +02:00
Clément DOUIN e609fc296c
review forward command 2021-09-19 16:35:52 +02:00
Clément DOUIN 65664d5405
review flag command, remove lib + dead code 2021-09-19 14:24:00 +02:00
Clément DOUIN 71818e04b4
review delete command 2021-09-19 11:36:11 +02:00
Clément DOUIN 2e27972716
review copy command 2021-09-19 11:18:17 +02:00
Clément DOUIN c155d30e54
review completion command 2021-09-19 11:04:01 +02:00
Clément DOUIN 2bcad3ff87
review attachment command 2021-09-19 10:55:15 +02:00
Clément DOUIN 474fae06ee
move attachment, body and header to dedicated folders 2021-09-19 10:14:25 +02:00
Clément DOUIN cdce6c0bf2
fix tpl forward/reply, fix flag subcmd (#190) 2021-09-19 00:08:57 +02:00
Clément DOUIN e065d8d905
fix new tpl sig 2021-09-18 21:45:26 +02:00
Clément DOUIN 8e2a703e2b
improve arg comments, rename arg Match to Command 2021-09-18 15:15:36 +02:00
Clément DOUIN e41a71648c
rename output cli to arg 2021-09-18 00:32:46 +02:00
Clément DOUIN 94e9711c58
split input into submodules 2021-09-18 00:29:49 +02:00
Clément DOUIN 8fbbb324da
merge back account with config 2021-09-17 21:55:11 +02:00
Clément DOUIN 94f7dd5b05
remove config from domain module 2021-09-17 18:30:17 +02:00
Clément DOUIN 54493540b4
improve msg arg/handlers + tpl + flag 2021-09-17 18:17:11 +02:00
Clément DOUIN bc5f9045ce
improve imap and mbox arg/handler 2021-09-16 16:43:41 +02:00
Clément DOUIN 248240f52d
improve entities and services from and try_from 2021-09-16 15:29:20 +02:00
Clément DOUIN 0ed1147f3d
move domain stuff to domain/, improve completion 2021-09-16 01:35:31 +02:00
Clément DOUIN 223537c4ca
remove ctx, turn output into a service 2021-09-15 22:47:00 +02:00
Clément DOUIN 07833c2fc7
make smtp service lazy with instance() 2021-09-14 22:49:52 +02:00
Clément DOUIN 979c6ef1c9
refactor config and account system 2021-09-14 00:34:34 +02:00
Clément DOUIN 5a9481910f
turn smtp into an interfaced service 2021-09-13 15:32:01 +02:00
Clément DOUIN c619f06206
replace error-chain by anyhow (#152) 2021-09-13 11:52:20 +02:00
Clément DOUIN fa622ba1db
improve table structure + doc 2021-09-13 10:32:05 +02:00
Clément DOUIN decb4192aa
restore cpo vim plugin 2021-09-11 00:51:25 +02:00
Clément DOUIN 0f7e95ccc0
put back wiki as git submodule 2021-09-11 00:50:58 +02:00
TornaxO7 0e68801a35
refactor msg model (#173)
* Adding Mail structure

Adding a main structure which can be used for *everything* which has to do with
a mail:
    - Writing a new mail
    - Fetching the information of a mail

* Write mails

User can write mails now

* Writing mail

When mail is converted to a sendable message, it'll print out a nice little
error message what to do and which field is missing a value.

* Mail

List subcommand works with new struct now.

* Forwarding

Started implementation for forwarding message

* Breaking Commit

This is just a "backup" commit

* First finished

Himalaya can compile successfully now.

* Removed uneccessary files

- Moved everything from msg/mail to msg/model
- Removed uneccessary files

* Renaming

Renamed all "Mail" and "Mails" struct to "Msg" and "Msgs".

* Cleaning

Removed an CLI-Subcommand which can't be used anymore

* Flags

Fixed flags to vector and added the template subcommand back

* Changes to Flags

Changed the datatype from Vec<Flag<'static>> to HashSet<Flag<'static>>, because
each Message/Mail can include only one flag-type, so why not a HashSet for this
job?

* Cargo.toml changes

Fixed the lettre-dependencie which points to the pull request with the given
serde implementation for ContentType (needed for Attachments).

* Fix Template bug and removed unnecessary files.

- Removed the msg/flag/flag.rs file since we can use the imap::types::Flag
  implementation now
- `himalaya template new` printed the template two times. This should be fixed
  now

* Template command

Fixed formatting when printing out template

* Sending Mail

Fixed bug that user can't send a mail

* Msg

Moved the body from the attachment-vector out to an external attribute of the
struct.

* Msg listing and changed Msg::from to Msg::try_from

- Fixed bug that listing didn't showed up addresses in the `From:` field for
  example
- Made each `from` trait function to `try_from` for better error-handling

* Tests

- Fixed tests in `tests/imap_conn.rs`

* Cargo.toml changes, Bug fixes, Documentation

- Updated mailparse to 0.13.4
- Added new "new" function to Account
- Cleaned up some functions (removed some)
- Added Eq and PartialEq derives for msg
- Bugfix:
    It couldn't get the body of some mails, because they were inside a
    multipart/alternative part. Now the mail is iterating through all subparts
    and picks up the firs text/plain "attachment" and uses it as the body.

* Changed Msg attributes viewability

- Made the "main attributes" of the Msg struct public
- Removed to getter functions

* Big envelope changes

- Added documentation
- Removed the getter functions, beacuse the attributes are public

* Documentation and Cleanup

- Removed the `new` constructor of the envelope, since it's actually the same as
  Envelope::default()
- Addded tests and Documentation to Attachments.rs

* Documentation and Tests

- Added docuemntation for msg/body.rs
- Fixed some syntax errors in the doc strings

* General msg

- Added `get_raw` function and `raw` field for the `Msg` struct.
- Fixed raw output of msg
- Started documentation + tests for the Msg struct

* Changes to Msg

- Added Clone derive
- Added documentation for change_to_reply method
- Added tests to change_to_reply method

* Msg tests and Account changes

- Changed `Account::new()` function
- Added more documentation to Msg struct
- Added more tests to Msg struct

* Removed an unknown file

Removed src/.rust_info.json (don't know where it came)

* Msgs finished(?)

Added final documentation to the Msg struct.

* ImapConnector Fix

Fixed the bug, when trying to move a msg, the envelope wasn't applied to the
fetch. Fixed that in the `get_msg` method.

* Msg

- Bug fixes:
    - Adding Message ID and Subject in the to_sendable_msg function

- Removed an println statement for debugging
- Added more error messages

* Cargo.toml

Changed order and added some comments to the dependencies.

* Msg

Removed an unnecessary documentation part.

* Fixed documentation

* Removing non-debugflags for dev profile

Removing debug=false for the dev profile since it was just for me.

* Cleanup

Removed the comment blocks and reduced some comments

* Cleanup

Reformatted some stuff

* Cleanup

Replaced the word "mail" with "msg".

* Formatting

Fixed formatting in src/flag/model.rs file

* Little fix

* Changes and tests

- New "feature":
    If you reply to a reply, the subject won't look like this for example:

        Re: Re: Re: Re: Re: Re: The subject

- Fixed tests. All tests pass now (run `cargo test`)

* Idea(?)

Renamed all <module>_matches/_subcmds to general "matches" and "subcmds()".
All modules have the same: "matches()" and "subcmds()"

* Little fix

Changed the name from "imap_conn" to "conn" by mistake. Fixed that

* Bug fix

When sending a message, himalaya will generate a UUID on its own if there's no
message-id for the message yet.

* Bug fix

Removed angle brackets, since they are added through the lettre library.

* Bugfix

Removed an unnecessary (old) line.

* Cleanup

Removed the last comment blocks.

* Fixed lettre dependencie

* Bugfixes and Error handling

- When calling the msg_interaction function, the user can edit the msg first,
  before the prompt comes up
- Also added a error output, if the msg couldn't be converted into a sendable
  message.

* Error handling

Improved output of error

* Bug fixes, Error Handling

- Improved error handling for the string parsing
- Added attempt to fix the bug that a whitespace is added in the end of an
  address

* Trimming

Added trims to avoid invalid white spaces in the addresses.

* Fixing whitespace bug

All addresses are gonna trimmed before adding to a header now

* Adding encoding, Changed dependencie

- Added encoding for the body part
- Changed the lettre dependencie of lettre to TornaxO7's fork of lettre, because
  the "ContentTypeEncoding" struct needs the "Eq", "Serialize" and "Deserialize"
  derives.

* Improved Error handling

Added a warning, if a message included an unknown attachment.

* Fixed tests

Fixed the documentation for passing the tests.

* Doc change

* Bugfis: When replying, signature is added now as well

* Bugfix: Forwarding Message

When forwarding a message, himalaya, put the signature in the end of the
mail/msg. Now it's added above the '-------Forwarded Message---------' line.

* Readjusted tests and new method

- Changed the way to create a new account:
    - Account::new => Sets signautre to "None"
    - Account::new_with_signature => Sets signature to the given argument

    This makes it more flexible to create specifique accounts for tests for
    example.

- Fixed the tests so all are passing now

* improve sig and sig delim concat process

* add signature delim struct comment

* fix signatures + tests

* fix body and signature new lines

* Adding [serde(rename_all = "camelCase")] to structs

* fix reply indentation and signature new lines

* add default rustfmt.toml

* apply fmt on all the project

* fix msg tests

* Makeing Ctx struct independent

- The Ctx struct doesn't include references anymore. This makes it easier to
    create new Ctx instances by doing the following:

        Ctx {
            <attribute>: <value>,
            .. Ctx::default()
        }

    This helps especially for writing tests.

Also the attributes of the Ctx struct in the main-entry function aren't used
anymore after creating the Ctx struct. So there's no need to have only
references in the Ctx struct.

* Fixing JSON output

- JSON of message includes `hasAttachment` key now
- JSON output shows both body types: Text and Html
- Changed `Body` struct so it can store html and text now.

* Tests

Updated tests with the latest Body implementation

* Fixes

- Removed suspicious println macro in serializer of msg... *cough cough*
- Fixed output in the "read" command
- othe small fixes

* Formatting

Formatted all files

* Msg

- Adding 'get_full_message' method which prints out all information of the
  message in a string

* New Msg-Struct

Adding MsgSerialized, a struct, which represents the "correct" serialized
version of a message because it includes another attribute: `has_attachment`.

* Cleanup

Removed the manual serialize implementation of `Msg` and added a little more
info about the MsgSerialized.

* Test fixes

Adjusted all tests so all are passing now.

* Little changes

- Used a better condition for checking if the message includes attachments or
  not
- format fixes

* Fixing tests and Docs

- Provided more docs
- Refactored tests and added more tests

* Expanding specials

Added more "special characters" which will add some quotes around the name if it
includes at least one of them.

* Fixing test

Improved the detection if the mail-name includes a special character or not.

* Variable renaming

Renamed a variable for better readability.

* Envelope renaming

* Small change

Renamed the variable of the `TryFrom` implementation for the
imap_proto::Envelope.

* Last stuff

- Making the attributes of mboxes independent. We can store them now as well!
- Added more docs
- Added type-safety for flags
- Expanded flags a bit
- Added more tests
- Added a short summary of the file-structure in the beginning of the doc.

* Help command fix

Fixing help command description.

* Small doc change

* Doc fix

Fixing the link to the mbox delimiter.

* Fixing typo

* Doc fix

* Added docs for Output struct

* Fixing tests

Fixing a little test issue

* Formatting changes + doc change

- Removed bold + capital words for logout-doc
- Run format on each *.rs file

* Fixing tests

- Testing the return value of the flags struct as a string doesn't really work
  since it's a HashSet => Converted it into a Vec (in the test) to set the order
  as well.
- Fixed imap test by reverting the changes in the test.

* Error handling

Changed error output when creating an Imap-Connection. Should help debugging :)

* Formatting fixes and refactoring

- Using `trim_end_matches` instead of "pop"s now.
- Executed `cargo fmt`

* Trying to fix test workflow

* Fixes

Updated dependencies with `cargo update` and let cargo point to master branch of
TornaxO7's lettre-fork because this should probably fix the issue with the
nix-build.

* Test fix

Fixing the workflow.

* Workflow fix

Removing semicolon

* Starting workflow

Added a new line to be able to push.

* Workflow

Reverting the workflow command.

* Workflows

Reverting workflow to master workflow.

* let actions/checkout@v2 run first

* Forwarded message's signature misplaced

Changes the order of the signature for forwarded messages.

* Output change

Changed the output if an error occurs.

* Fixing output for template-building

* Template shows raw data with JSON format #23

When printing the message in json, the raw message is printed out as a string
now.

* the_sender_is_not_displayed_properly_in_table_and_json #21

- When displaying the table, we'll look first, if a name exists, if yes => use
  it otherwise use the email address.

- Added the rfc2047_decoder for parsing addresses

* Formatting

Run 'cargo fmt'

Co-authored-by: Clément DOUIN <soywod@users.noreply.github.com>
Co-authored-by: Erik <erik1000@protonmail.com>
2021-09-11 00:35:22 +02:00
Matthew Toohey 2ac2f53f31
disable cursorline for read/write in vim plugin (#195)
Co-authored-by: mtoohey31 <mtoohey31@users.noreply.github.com>
2021-08-29 22:39:22 +02:00
Clément DOUIN 608057b23b
fix integration tests 2021-08-18 22:13:07 +02:00