Add config flow to IMAP integration (#25656)

This commit is contained in:
Rami Mosleh 2023-01-09 13:46:11 +02:00 committed by GitHub
parent e30139e1ce
commit adbc29f4fe
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -9,72 +9,28 @@ ha_domain: imap
ha_platforms: ha_platforms:
- sensor - sensor
ha_integration_type: integration ha_integration_type: integration
ha_codeowners:
- '@engrbm87'
ha_config_flow: true
--- ---
The `imap` integration is observing your [IMAP server](https://en.wikipedia.org/wiki/Internet_Message_Access_Protocol) and reporting the amount of unread emails. The IMAP integration is observing your [IMAP server](https://en.wikipedia.org/wiki/Internet_Message_Access_Protocol) and reporting the number of unread emails. Other search criteria can be used, as shown in the example below.
## Configuration {% include integrations/config_flow.md %}
To enable this sensor, add the following lines to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
sensor:
- platform: imap
server: YOUR_IMAP_SERVER
username: YOUR_USERNAME
password: YOUR_PASSWORD
```
{% configuration %}
server:
description: The IP address or hostname of the IMAP server.
required: true
type: string
port:
description: The port where the server is accessible.
required: false
default: 993
type: integer
name:
description: Name of the IMAP sensor.
required: false
type: string
username:
description: Username for the IMAP server.
required: true
type: string
password:
description: Password for the IMAP server.
required: true
type: string
folder:
description: The IMAP folder to watch.
required: false
default: inbox
type: string
search:
description: The IMAP search to perform on the watched folder.
required: false
default: UnSeen UnDeleted
type: string
charset:
description: The character set used for this connection.
required: false
default: utf-8
type: string
{% endconfiguration %}
### Gmail with App Password ### Gmail with App Password
If youre going to use Gmail, its always good practice to create a [App Password](https://support.google.com/mail/answer/185833). If youre going to use Gmail, you need to create an [App Password](https://support.google.com/mail/answer/185833).
1. Go to your [Google Account](https://myaccount.google.com/) 1. Go to your [Google Account](https://myaccount.google.com/)
2. Select **Security** 2. Select **Security**
3. Under “Signing in to Google” select **App Passwords** 3. Under “Signing in to Google” select **App Passwords**
4. Sign in to your Account, and create a new App Password for Gmail. 4. Sign in to your Account, and create a new App Password for Gmail.
5. Then you can setup the intergation as below:
You can now use this as your password for Gmail, in your configuration. - Server: `imap.gmail.com`
- Port: `993`
- Username: Your full email address
- Password: The new app password
### Configuring IMAP Searches ### Configuring IMAP Searches
@ -84,27 +40,12 @@ By default, this integration will count unread emails. By configuring the search
* `FROM`, `TO`, `SUBJECT` to find emails in a folder (see [IMAP RFC for all standard options](https://tools.ietf.org/html/rfc3501#section-6.4.4)) * `FROM`, `TO`, `SUBJECT` to find emails in a folder (see [IMAP RFC for all standard options](https://tools.ietf.org/html/rfc3501#section-6.4.4))
* [Gmail's IMAP extensions](https://developers.google.com/gmail/imap/imap-extensions) allow raw Gmail searches, like `X-GM-RAW "in: inbox older_than:7d"` to show emails older than one week in your inbox. Note that raw Gmail searches will ignore your folder configuration and search all emails in your account! * [Gmail's IMAP extensions](https://developers.google.com/gmail/imap/imap-extensions) allow raw Gmail searches, like `X-GM-RAW "in: inbox older_than:7d"` to show emails older than one week in your inbox. Note that raw Gmail searches will ignore your folder configuration and search all emails in your account!
#### Full configuration sample with search ### Selecting a charset supported by the imap server
```yaml Below is an example for setting up the integration to connect to your Microsoft 365 account that requires `US_ASCII` as charset:
# Example configuration.yaml entry for gmail - Server: `outlook.office365.com`
sensor: - Port: `993`
- platform: imap - Username: Your full email address
server: imap.gmail.com - Password: Your password
port: 993 - Charset: `US-ASCII`
username: YOUR_USERNAME
password: YOUR_PASSWORD
search: FROM <sender@email.com>, SUBJECT <subject here>
# Or use X-GM-RAW search-term like this, to find unread emails from the last 7 days in your inbox
# search: 'X-GM-RAW "in: inbox newer_than:7d is:unread"'
# Example configuration.yaml entry for Office 365
sensor:
- platform: imap
server: outlook.office365.com
port: 993
username: email@address.com
password: password
search: FROM <sender@email.com>, SUBJECT <subject here>
charset: US-ASCII
```