The imap_attachment
sensor enables the downloading of attachment files from emails. It extends the official IMAP Email Content sensor.
Clone this repo into the custom_components
directory:
cd [HA_HOME]/custom_components
git clone /~https://github.com/emcniece/ha_imap_attachment.git
Home Assistant must first be allowed to access the directory with the target PDF file. Add the allowlist_external_dirs to configuration.yaml
. In this example, the PDF exists at /config/my.pdf
:
homeassistant:
allowlist_external_dirs:
- /config/attachments
Next add the sensor definition:
sensor:
- platform: imap_attachment
name: IMAP Attachments
storage_path: /config/attachments
By default this configuration will extract all text content found in the first page of the PDF.
For the main variables see the IMAP Email Content sensor documentation. The following variables are implemented by this sensor:
Path to a local PDF file. Default: /config/attachments
These attributes are available in addition to the IMAP Email Content sensor:
num_attachments
: Number of email message attachments, excluding the email bodyattachment_paths
: Full system paths to the latest downloaded attachments
# Example configuration.yaml entry
homeassistant:
allowlist_external_dirs:
- /config/attachments
sensor:
- platform: imap_attachment
name: Utility Bill Email
server: imap.gmail.com
port: 993
username: user@domain.com
password: hunter2
senders:
- noreply@somedomain.com
Can be used with the PDF Sensor to extract data from attachments on emails. In this example, an email from noreply@somedomain.com has a PDF attachment with a filename of utility-bill.pdf
:
# Example configuration.yaml entry
homeassistant:
allowlist_external_dirs:
- /config/attachments
sensor:
- platform: imap_attachment
name: Utility Bill Email
server: imap.gmail.com
port: 993
username: user@domain.com
password: hunter2
senders:
- noreply@somedomain.com
- platform: pdf
name: Water Usage Cost
file_path: /config/attachments/utility-bill.pdf
unit_of_measurement: $
regex_search: 'Water Consumption Charge\s+([\d.]+)\s+x\s+\$\s+([\d.]+)\s+([\d.]+)\s-+'
regex_match_index: 3