AsyncClient used different file-handling logic than the sync Client and mangled repeated keys. The maintainer fixed it in PR #35, so upgrading to the release containing that fix resolves it. Workarounds for the affected version: use unique keys ("inline[0]", "inline[1]" instead of "inline" twice), or pass the attachments as a tuple of tuples rather than a list of tuples, which bypasses the SDK's dict/list checks and hands the object to requests verbatim. The reporter confirmed unique keys work. Source: https://github.com/mailgun/mailgun-python/issues/33
Source: https://github.com/mailgun/mailgun-python/issues/33