"rschaeferhig" <rs**********@discussions.microsoft.com> wrote in message
news:78**********************************@microsof t.com...
I have an ASP page that uses CDOSYS to send a simple HTML format email
with a PDF attachment. When I open the PDF attached to the email it shows up as a
blank page. I log into the web server console and open the same PDF in the
source directory and it opens fine. I run a binary comparison of the
source and attached files and there's a difference: one byte, x'2E' is missing at
offset x'0231'. If I save the attached file and use a hex editor to insert
the x'2E' the file opens just like the original.
Any ideas? I'm baffled...
Windows 2003 server right?
I've come across this at a few of my client's sites but I haven't found out
why it happens. I seems that CDOSYS ends up using binary encoding rather
than Base64 encoding when creating the attachment body part. It doesn't
happen all system though.
In the end I just used the following code to create the attachment myself:-
Function AddAttachment(Message, Source, FileName, MimeType)
Dim oPart ' As IBodyPart
Dim oStreamIn ' As ADODB.Stream
Dim oStreamOut ' As ADODB.Stream
Set oPart = Message.Attachments.Add
oPart.ContentMediaType = MimeType & "; Name = """ & FileName & """"
oPart.ContentTransferEncoding = "base64"
oPart.Fields("urn:schemas:mailheader:content-disposition").Value =
"attachment; FileName = """ & FileName & """"
oPart.Fields.Update
Set oStreamIn = Server.CreateObject("ADODB.Stream")
oStreamIn.Open
oStreamIn.Type = adTypeBinary
oStreamIn.LoadFromFile Source
Set oStreamOut = oPart.GetDecodedContentStream
oStreamIn.CopyTo oStreamOut
oStreamOut.Flush
oStreamIn.Close
Set AddAttachment = oPart
End Function
Given a MyStuff.PDF in the folder C:\temp this function is called as:-
Dim oMsg
Set oMsg = Server.CreateObject("CDO.Message")
'Set From, To, etc.
oMsg.TextBody = "Blah Blah"
AddAttachment oMsg, "c:\temp\MyStuff.pdf", "MyStuff.pdf", "application/pdf"
oMsg.Send
HTH
Anthony.