You should be able to render any file as a byte array. I do this all the time when I render RDLCs as PDF or Excel files in the browser. I render them to a byte array then write this to the response stream. In your case you would just add the byte array into an Attachment object.
VB
Dim att As New Attachment(New MemoryStream(bytes), name)
C#
Attachment att = new Attachment(new MemoryStream(bytes), name);