Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions homeassistant/components/sensor/imap_email_content.py
Original file line number Diff line number Diff line change
Expand Up @@ -219,17 +219,19 @@ def update(self):
return

if self.sender_allowed(email_message):
message_body = EmailContentSensor.get_msg_text(email_message)
message = EmailContentSensor.get_msg_subject(email_message)

if self._value_template is not None:
message_body = self.render_template(email_message)
message = self.render_template(email_message)

self._message = message_body
self._message = message
self._state_attributes = {
ATTR_FROM:
EmailContentSensor.get_msg_sender(email_message),
ATTR_SUBJECT:
EmailContentSensor.get_msg_subject(email_message),
ATTR_DATE:
email_message['Date']
email_message['Date'],
ATTR_BODY:
EmailContentSensor.get_msg_text(email_message)
}
26 changes: 17 additions & 9 deletions tests/components/sensor/test_imap_email_content.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,9 @@ def test_allowed_sender(self):
sensor.entity_id = 'sensor.emailtest'
sensor.schedule_update_ha_state(True)
self.hass.block_till_done()
self.assertEqual("Test Message", sensor.state)
self.assertEqual('Test', sensor.state)
self.assertEqual("Test Message",
sensor.device_state_attributes['body'])
self.assertEqual('sender@test.com',
sensor.device_state_attributes['from'])
self.assertEqual('Test', sensor.device_state_attributes['subject'])
Expand Down Expand Up @@ -89,13 +91,15 @@ def test_multi_part_with_text(self):
sensor.entity_id = "sensor.emailtest"
sensor.schedule_update_ha_state(True)
self.hass.block_till_done()
self.assertEqual("Test Message", sensor.state)
self.assertEqual('Link', sensor.state)
self.assertEqual("Test Message",
sensor.device_state_attributes['body'])

def test_multi_part_only_html(self):
"""Test multi part emails with only HTML."""
msg = MIMEMultipart('alternative')
msg['Subject'] = "Link"
msg['From'] = "sender@test.com"
msg['Subject'] = 'Link'
msg['From'] = 'sender@test.com'

html = "<html><head></head><body>Test Message</body></html>"

Expand All @@ -113,9 +117,10 @@ def test_multi_part_only_html(self):
sensor.entity_id = 'sensor.emailtest'
sensor.schedule_update_ha_state(True)
self.hass.block_till_done()
self.assertEqual('Link', sensor.state)
self.assertEqual(
"<html><head></head><body>Test Message</body></html>",
sensor.state)
sensor.device_state_attributes['body'])

def test_multi_part_only_other_text(self):
"""Test multi part emails with only other text."""
Expand All @@ -136,7 +141,9 @@ def test_multi_part_only_other_text(self):
sensor.entity_id = 'sensor.emailtest'
sensor.schedule_update_ha_state(True)
self.hass.block_till_done()
self.assertEqual("Test Message", sensor.state)
self.assertEqual('Link', sensor.state)
self.assertEqual("Test Message",
sensor.device_state_attributes['body'])

def test_multiple_emails(self):
"""Test multiple emails."""
Expand Down Expand Up @@ -172,10 +179,11 @@ def state_changed_listener(entity_id, from_s, to_s):
sensor.schedule_update_ha_state(True)
self.hass.block_till_done()

self.assertEqual("Test Message", states[0].state)
self.assertEqual("Test Message 2", states[1].state)
self.assertEqual("Test", states[0].state)
self.assertEqual("Test 2", states[1].state)

self.assertEqual("Test Message 2", sensor.state)
self.assertEqual("Test Message 2",
sensor.device_state_attributes['body'])

def test_sender_not_allowed(self):
"""Test not whitelisted emails."""
Expand Down