When sending email notifications along with attachments, the resulting multipart MIME structure is malformed. Attachments are included as an “alternative” part, rather than as a “mixed” part. As a result, some email clients, like Thunderbird, do not display these attachments because they’re interpreted as merely an alternative format of the email’s content, as with text vs HTML.
[Following quote is from an essentially identical bug report against Mailer which also relies on the Mail module.]
what i’m expecting the email to be structured like:
multipart/mixed multipart/alternative text/plain text/html application/pdf (i.e. in case of pdf attachment)
what i’m receiving:
multipart/alternative text/plain text/html application/pdf (i.e. in case of pdf attachment)
the practical effect:
thunderbird renders the right text body, depending on user preference (txt or html), but does not show the attachment as an attached file (it is however in the email source code as a bas63-encoded block) ios mail shows an empty email body, and only the pdf attachment as a file, since it is the last entry, and apparently the mail client then only renders this.
There are a handful of possibly-related bug reports against the Mail module Discourse relies on. Some of these reports are closed with an unstated implication that feeding the parts in a particular way solves the issue. I’m not sure which is the case here, but several of those reports are linked from the report I quoted and linked above.