* Added Search Configuration to IMAP Sensor
The IMAP sensor currently only counts unread emails in a folder. By exposing the IMAP search parameter, the sensor can be used to count other results:
- All emails in an inbox
- Emails sent from an address
- Emails matching a subject
- Other advanced searches, especially with vendor-specific extensions. Gmail in particular supports X-GM-RAW, which lets you use any Gmail search directly ("emails with X label older than 14 days with", etc)
For my use case, I just wanted total emails in a folder, to show an "X/Y" counter for total/unread. I started work on a one-off script to throw the data in, but figured I'd try to extend Home Assistant more directly, especially since this IMAP sensor correctly handles servers that push data. This is my first Home Assistant contribution, so apologies in advance if something is out of place! It's a pretty minimal modification.
* Added Server Response Checking
Looks like no library exception is thrown, so check for response text before parsing out results (previous code just counts spaces, so an error actually returns a state value of 4).
* IMAP Warning -> Error, Count Initializes to None
IMAP search response parsing throws an error instead of a warning.
Email count initializes as None instead 0.
Email count is untouched in case of failure to parse response (i.e. if server is temporarily down or throwing errors, or maybe due to user updating their authentication/login/etc).
Fixed line length on error so it fits under 80 characters.
* Fixed Indent on Logger Error
Sorry about the churn! Python is pretty far from my daily-use language. (I did run this one through pep8, at least)
* Update aioimaplib from v0.7.12 to v0.7.13
Changelog v0.7.13:
[aiolib] adds a connection lost callback [test] imapserver : added APPENDUID response for APPEND cmd [test][fix] imapserver append should add to the connected user mb [test] imapserver : more accurate building of message headers (using python email module)
* run script/gen_requirements_all.py
* IMAP Unread sensor updated for async and push
* Implement renames suggested in review
* Use async_timeout
* Keep push capability in a variable
* Reword for Hound
Message deletion in IMAP is a two step process: first delete, then expunge.
Deleting a message just sets a flag that usually makes the mail client hide
the message. It is the expunge that actually removes the message.
Thus, exclude the deleted messages so that the unread count matches up with
that of most mail clients.
* Clean-up, ordering, constants, and extend of schema
* Put REQUIREMENTS back and re-add line breaks
* Clean-up, ordering, constants, and extend of schema
* Extend platform
* Imap unread email sensor
Checks the inbox of a imap account for unread emails. Tested against
gmail.
Example config:
```
sensor:
- platform: imap
name: gmail test
user: USER
password: PASSWORD
server: imap.gmail.com
port: 993
```
* added to .coveragerc
* Code cleanup and typo fix.
* Added port range validation
* Fix lint errors