Yesterday I tried to attach a file in email via SAS the first time, but the weird thing was, it worked fine if I attached the CSV file, but if I tried to attach a xlsx file, the attachment in email couldn't be opened.
I then clicked on the attached file, it said "Excel found unreadable content in "filename.xlsx". Do you want to recover the contents of this workbook? If you trust the source of this workbook, click yes."
Then I clicked on yes, it showed another error message "Excel cannot open the file "filename.xlsx" because the file format or the file extension is not valid. Verify that the file has not been corrupted and the the file extension matches the format of the file."
I checked the xlsx file, it looked all good and could be opened on local computer without question. Does anybody know what could cause the issue? Thanks!
filename outmail email 'xxxx@xxxxxx.COM'
subject="xxxxxxxxxxxxx"
attach="/xxx/xxxx/xxxx.xlsx";
Try this, perhaps ordering is required. This works for me.
attach=("Spreadsheet.xlsx" content_type="application/xlsx")
If sending multiple files, specify the content type for each attachment. Example:
attach=("Spreadsheet1.xlsx" content_type="application/xlsx"
"Spreadsheet2.xlsx" content_type="application/xlsx"
"Spreadsheet3.xlsx" content_type="application/xlsx"
"Spreadsheet4.xlsx" content_type="application/xlsx")
The issue may be with how the xlsx file was created. If created in SAS provide example code.
proc export data=outlib.test outfile="test.xlsx"
dbms=xlsx replace;
sheet="Data";
run;
With Excel you need to add this to your FILENAME:
content_type="application/xlsx"
Thanks SASKiwi. I added content_type as you suggested but failed with the same error again.
Try this, perhaps ordering is required. This works for me.
attach=("Spreadsheet.xlsx" content_type="application/xlsx")
If sending multiple files, specify the content type for each attachment. Example:
attach=("Spreadsheet1.xlsx" content_type="application/xlsx"
"Spreadsheet2.xlsx" content_type="application/xlsx"
"Spreadsheet3.xlsx" content_type="application/xlsx"
"Spreadsheet4.xlsx" content_type="application/xlsx")
Yeah it works now!!! So excited! Thanks a million SASKiwi!
Thank you SO much. Just used this with a file created with the new ODS excel destination.
Hi , I had a same problem. And took long time around this. With above solution. It is working fine. Thanks you very much. Fahim
Thanks @SASKiwi
This solved my problem. I was sending some xlsx files to sharepoint by email and encountered with this problem. In my case I have several files to attach, so it worked for me only if I have content_type="application/xlsx" next to all the files.
Like this:
attach=("Spreadsheet1.xlsx" content_type="application/xlsx" "Spreadsheet2.xlsx" content_type="application/xlsx" "Spreadsheet3.xlsx" content_type="application/xlsx" "Spreadsheet4.xlsx" content_type="application/xlsx")
Wow! Good to see this tip has helped so many.
Because of @brulard's recent reply to this topic, it showed up on recent activity.
@Eusuee. If you are still around, why not mark this topic as solved?
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.