iachat/spec
Pranav 24f49b9b5a
fix: Process non-image inline attachments as regular attachments (#10998)
In Chatwoot, we rely on the Content-ID for inline attachments to replace
the link with the uploaded attachment URL. Our expectation was that only
images would be inline, while other attachments would not. However,
email clients like Apple Mail (sigh) allow users to send inline
attachments that are not images, and these attachments often lack a
Content-ID. This creates significant issues in rendering.
 
I investigated how other email clients handle this scenario. When
viewing the same email (sent from Apple Mail) in Gmail, only one image
appears—and it’s treated as an attachment, not inline. This happens
because both attachments are the same image, and Apple Mail only sends
one copy. See the screenshot below.

| Apple Mail | Gmail | 
| -- | -- | 
| <img width="646" alt="Screenshot 2025-02-27 at 8 20 17 PM"
src="https://github.com/user-attachments/assets/e0d1cd2d-e47c-4081-a53b-7a67106341b3"
/> | <img width="360" alt="Screenshot 2025-02-27 at 8 20 51 PM"
src="https://github.com/user-attachments/assets/b206e56e-8f86-43e9-867b-d895c36aff78"
/> |

A good fix for this would be to check if the Content-ID is missing and
then upload the file as a regular attachment. However, the Mail gem (for
some reason) automatically adds a default Content-ID to inline parts. I
need to dig into the source code to understand why this happens.

For now, I’ve implemented a check to treat non-image attachments as
regular attachments. Inline image attachments are already handled by
appending an image tag at the end if the content-id is not found in the
body. A sample conversation to test this behavior is
[here](https://app.chatwoot.com/app/accounts/1/conversations/46732).
2025-02-28 13:33:48 -08:00
..
actions fix: Migrate notes when merging the contacts (#8749) 2024-01-20 10:32:18 +04:00
assets chore: Contact import improvements (#7787) 2023-08-23 23:24:47 -07:00
builders fix: Exclude notifications for blocked contacts, except mentions (#10659) 2025-01-12 15:30:27 +05:30
channels chore: Enable the new Rubocop rules (#7122) 2023-05-19 14:37:10 +05:30
configs chore: Enable the new Rubocop rules (#7122) 2023-05-19 14:37:10 +05:30
controllers feat: Add new APIs for live reports with team filter (#10994) 2025-02-27 16:11:04 -08:00
dispatchers Non blocking event dispatch (#652) 2020-03-29 19:18:30 +05:30
drops feat: Add the support for custom attributes in message variables (#8511) 2023-12-08 14:13:35 -08:00
enterprise feat: Add support for bulk action for Captain FAQs (#10905) 2025-02-27 17:05:33 -08:00
factories feat: Add new APIs for live reports with team filter (#10994) 2025-02-27 16:11:04 -08:00
finders fix: Inbox view Read/Snoozed display filters (#8907) 2024-02-17 13:59:25 +05:30
fixtures fix: Process non-image inline attachments as regular attachments (#10998) 2025-02-28 13:33:48 -08:00
helpers feat: Linear OAuth 2.0 (#10851) 2025-02-27 18:15:53 +05:30
integration Fix url in emails, add frontendURL helper (#19) 2019-08-25 19:59:28 +05:30
jobs fix: RemoveStaleRedisKeys service (#10562) 2024-12-11 03:38:25 +08:00
lib feat: Linear OAuth 2.0 (#10851) 2025-02-27 18:15:53 +05:30
listeners fix: Prevent duplicate notifications for mentions (#10675) 2025-01-13 11:20:31 +05:30
mailboxes fix: Process non-image inline attachments as regular attachments (#10998) 2025-02-28 13:33:48 -08:00
mailers feat: add Google Email fetch and OAuth token refresh service (#9603) 2024-06-11 14:22:03 +05:30
models feat: invalidate cache after inbox members or team members update (#10869) 2025-02-20 21:28:38 -08:00
policies Feature: Ability to switch between multiple accounts (#881) 2020-05-26 22:38:48 +05:30
presenters chore: Update the precision of the updated_at timestamp in conversation model (#10875) 2025-02-10 20:22:11 -08:00
requests/api/v1 feat: Update the slack integration-flow to allow users to select the channel (#7637) 2023-07-28 14:50:30 -07:00
services chore: Disable email notifications for unconfirmed users (#10964) 2025-02-24 12:14:40 -08:00
support feat: Slack link unfurling (#7940) 2023-09-29 19:35:56 +05:30
workers fix: Capture delivery errors to avoid false positives (#8790) 2024-01-26 14:22:18 +04:00
rails_helper.rb feat: locking and retry in FB message parsing (#7701) 2023-08-23 09:48:17 +07:00
spec_helper.rb feat(ee): Add Captain features (#10665) 2025-01-14 16:15:47 -08:00
test_helper.rb Chore: Setup test coverage in codeclimate [#332] (#333) 2019-12-02 08:57:11 +05:30