diff --git a/plexpy/newsletters.py b/plexpy/newsletters.py index e9c7c494..6402a46f 100644 --- a/plexpy/newsletters.py +++ b/plexpy/newsletters.py @@ -470,18 +470,24 @@ class Newsletter(object): if self.config['formatted']: newsletter_stripped = ''.join(l.strip() for l in self.newsletter.splitlines()) + plaintext = 'HTML email support is required to view the newsletter.\n' + if plexpy.CONFIG.NEWSLETTER_SELF_HOSTED and plexpy.CONFIG.HTTP_BASE_URL: + plaintext += self._DEFAULT_BODY.format(**self.parameters) + if self.email_config['notifier_id']: return send_notification( notifier_id=self.email_config['notifier_id'], subject=self.subject_formatted, - body=newsletter_stripped + body=newsletter_stripped, + plaintext=plaintext ) else: email = EMAIL(config=self.email_config) return email.notify( subject=self.subject_formatted, - body=newsletter_stripped + body=newsletter_stripped, + plaintext=plaintext ) elif self.config['notifier_id']: return send_notification( diff --git a/plexpy/notifiers.py b/plexpy/notifiers.py index 2912b64d..4662b5e0 100644 --- a/plexpy/notifiers.py +++ b/plexpy/notifiers.py @@ -1295,11 +1295,19 @@ class EMAIL(Notifier): def agent_notify(self, subject='', body='', action='', **kwargs): if self.config['html_support']: + plain = MIMEText(None, 'plain', 'utf-8') + plain.replace_header('Content-Transfer-Encoding', 'quoted-printable') + plain.set_payload(kwargs.get('plaintext', bleach.clean(body, strip=True)), 'utf-8') + + html = MIMEText(body, 'html', 'utf-8') + msg = MIMEMultipart('alternative') - msg.attach(MIMEText(bleach.clean(body, strip=True), 'plain', 'utf-8')) - msg.attach(MIMEText(body, 'html', 'utf-8')) + msg.attach(plain) + msg.attach(html) else: - msg = MIMEText(body, 'plain', 'utf-8') + msg = MIMEText(None, 'plain', 'utf-8') + msg.replace_header('Content-Transfer-Encoding', 'quoted-printable') + msg.set_payload(body, 'utf-8') msg['Message-ID'] = email.utils.make_msgid() msg['Date'] = email.utils.formatdate(localtime=True)