Skip to content

Commit b8f9ba3

Browse files
authored
Merge pull request #4734 from zenoss/backport/ZEN-34979.7x
ZEN-34979: Zenmail does not support UTF8 subject, nor nested multipart messages
2 parents 8f68102 + 3ca07eb commit b8f9ba3

1 file changed

Lines changed: 9 additions & 2 deletions

File tree

src/Products/ZenEvents/MailProcessor.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import rfc822
2222
import calendar
2323
from datetime import tzinfo, timedelta, datetime
24+
from email import header
2425

2526

2627
from Products.ZenEvents.Event import Event
@@ -120,7 +121,8 @@ def process(self, messageStr):
120121
fromIp = None
121122
log.info('Hostname lookup failed for host: %s', fromHost)
122123

123-
subject = message.get('Subject').replace("\r","").replace("\n", "")
124+
raw_subject = message.get('Subject').replace("\r","").replace("\n", "")
125+
subject = header.decode_header(raw_subject)[0][0]
124126

125127
secs = self.getReceiveTime(message)
126128

@@ -132,7 +134,12 @@ def process(self, messageStr):
132134
payload = 'This is the default message'
133135
if message.is_multipart():
134136
for msg in message.get_payload():
135-
if msg.get_content_maintype() == 'text' or msg.get_content_type() == 'message/rfc822':
137+
if msg.is_multipart():
138+
for m in msg.get_payload():
139+
if m.get_content_maintype() == 'text' or m.get_content_type() == 'message/rfc822':
140+
payload = m.get_payload(decode=True)
141+
break
142+
elif msg.get_content_maintype() == 'text' or msg.get_content_type() == 'message/rfc822':
136143
payload = msg.get_payload(decode=True)
137144
break
138145
else:

0 commit comments

Comments
 (0)