Repository: incubator-airflow Updated Branches: refs/heads/v1-8-test 3fe53cb0e -> 0611f5c58
[AIRFLOW-665] Fix email attachments Content-Disposition must be set separately on the MIMEApplication. Passing it to the constructor just puts it in the Content-Type header. Closes #1916 from dgies/master Project: http://git-wip-us.apache.org/repos/asf/incubator-airflow/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-airflow/commit/9a7801d4 Tree: http://git-wip-us.apache.org/repos/asf/incubator-airflow/tree/9a7801d4 Diff: http://git-wip-us.apache.org/repos/asf/incubator-airflow/diff/9a7801d4 Branch: refs/heads/v1-8-test Commit: 9a7801d4ee792372a717e9b1da6daceecb9c3d68 Parents: a6b1481 Author: Daniel Gies <[email protected]> Authored: Sat Jan 7 18:00:36 2017 +0100 Committer: Bolke de Bruin <[email protected]> Committed: Sat Jan 7 18:00:57 2017 +0100 ---------------------------------------------------------------------- airflow/utils/email.py | 7 ++++--- tests/core.py | 4 ++++ 2 files changed, 8 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-airflow/blob/9a7801d4/airflow/utils/email.py ---------------------------------------------------------------------- diff --git a/airflow/utils/email.py b/airflow/utils/email.py index f55fe10..ab3b244 100644 --- a/airflow/utils/email.py +++ b/airflow/utils/email.py @@ -76,11 +76,12 @@ def send_email_smtp(to, subject, html_content, files=None, dryrun=False, cc=None for fname in files or []: basename = os.path.basename(fname) with open(fname, "rb") as f: - msg.attach(MIMEApplication( + part = MIMEApplication( f.read(), - Content_Disposition='attachment; filename="%s"' % basename, Name=basename - )) + ) + part['Content-Disposition'] = 'attachment; filename="%s"' % basename + msg.attach(part) send_MIME_email(SMTP_MAIL_FROM, recipients, msg, dryrun) http://git-wip-us.apache.org/repos/asf/incubator-airflow/blob/9a7801d4/tests/core.py ---------------------------------------------------------------------- diff --git a/tests/core.py b/tests/core.py index da6f597..bcc7840 100644 --- a/tests/core.py +++ b/tests/core.py @@ -2053,6 +2053,8 @@ class EmailSmtpTest(unittest.TestCase): assert msg['Subject'] == 'subject' assert msg['From'] == configuration.get('smtp', 'SMTP_MAIL_FROM') assert len(msg.get_payload()) == 2 + assert msg.get_payload()[-1].get(u'Content-Disposition') == \ + u'attachment; filename="' + os.path.basename(attachment.name) + '"' mimeapp = MIMEApplication('attachment') assert msg.get_payload()[-1].get_payload() == mimeapp.get_payload() @@ -2070,6 +2072,8 @@ class EmailSmtpTest(unittest.TestCase): assert msg['Subject'] == 'subject' assert msg['From'] == configuration.get('smtp', 'SMTP_MAIL_FROM') assert len(msg.get_payload()) == 2 + assert msg.get_payload()[-1].get(u'Content-Disposition') == \ + u'attachment; filename="' + os.path.basename(attachment.name) + '"' mimeapp = MIMEApplication('attachment') assert msg.get_payload()[-1].get_payload() == mimeapp.get_payload()
