|
it
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
ASP CDOSYS SMTP Email attachments are being corrupted
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... "rschaeferhig" <rschaefer***@discussions.microsoft.com> wrote in message Windows 2003 server right?news:781065F5-1E09-447E-8736-D43826913B04@microsoft.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... 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.
Show quote
"Anthony Jones" wrote:
> > "rschaeferhig" <rschaefer***@discussions.microsoft.com> wrote in message > news:781065F5-1E09-447E-8736-D43826913B04@microsoft.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. > > > Oops.
Windows 2000 Server AND Windows 2003 Server, but I'll give it a shot. I suspected an encoding problem, I've just never had any experience doing my own encoding so I had no idea where to start. thanks. Show quote "Anthony Jones" wrote: > > "rschaeferhig" <rschaefer***@discussions.microsoft.com> wrote in message > news:781065F5-1E09-447E-8736-D43826913B04@microsoft.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. > > > I had the same problem, have you tried sending via CDNOTS?
Sanj Show quote "rschaeferhig" wrote: > Oops. > > Windows 2000 Server AND Windows 2003 Server, but I'll give it a shot. I > suspected an encoding problem, I've just never had any experience doing my > own encoding so I had no idea where to start. > > thanks. > > "Anthony Jones" wrote: > > > > > "rschaeferhig" <rschaefer***@discussions.microsoft.com> wrote in message > > news:781065F5-1E09-447E-8736-D43826913B04@microsoft.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. > > > > > > |
|||||||||||||||||||||||