Search code examples
sendgridsendgrid-api-v3

API v3 - Why is an attachment of type application/pdf downloading as type 'File' instead of PDF itself?


I am trying to send a PDF (4.3KB) along with my email request. The SendGrid v3 MailSend Doc. says that attachments is an (array[object]), and shall have the following strings -

enter image description here

As you can see, we must provide the Base64 encoding of the file - so I converted my PDF to Base64 from here. Here's the code I am using (Curl) to execute my request -

curl --request POST \
  --url https://api.sendgrid.com/v3/mail/send \
  --header 'authorization: Bearer <API_KEY>' \
  --header 'Content-Type: application/json' \
  --data '{
  "personalizations": [
    {"to" : [{"email": "[email protected]"}], "dynamic_template_data": {"cardphoto": "xxx"}},
    {"to" : [{"email": "[email protected]"}], "dynamic_template_data": {"cardphoto": "xxx"}}
  ],
  "from": {"email": "[email protected]", "name": "Sample Name"},
  "reply_to": {"email": "[email protected]","name": "Sample Name"},
  "attachments": [
    {
      "content": "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",
      "filename": "WIRC Sr No 42 - CA xxxxx",
      "type": "application/pdf",
      "disposition": "attachment"
    }
  ],
  "template_id" : "<TEMPLATE_ID>"
}'

The above code works fine, I am receiving the email with an attachment. But when I open the email on GMail/ YahooMail/ Outlook (desktop) and try to install the attached file, the install file does not end up as PDF, but of filetype 'File'. The strange part is, in the email it looks like a PDF is attached, but the download result is not a PDF. This image explains the whole scenario in more detail - https://i.ibb.co/YysYRTh/image.png.

Is there something wrong in the attachment part of my Curl code? What should I do? Kindly guide me... Thanks!


Solution

  • Thanks to @KJ & @philnash, adding '.pdf' to filename property worked perfectly for me. Thanks for guiding me! :)

    >> "filename": "WIRC Sr No 42 - CA xxxxx""filename": "WIRC Sr No 42 - CA xxxxx.pdf"