469,653 Members | 1,803 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,653 developers. It's quick & easy.

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...
Mar 27 '06 #1
4 11820

"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.
Mar 27 '06 #2


"Anthony Jones" wrote:

"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.

Mar 27 '06 #3
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" <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.

Mar 27 '06 #4
I had the same problem, have you tried sending via CDNOTS?

Sanj

"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" <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.

Mar 29 '06 #5

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

21 posts views Thread by tp | last post: by
12 posts views Thread by Basr | last post: by
8 posts views Thread by Akbur | last post: by
8 posts views Thread by worldofrugs | last post: by
4 posts views Thread by =?Utf-8?B?SmVycnkgQw==?= | last post: by
reply views Thread by gheharukoh7 | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.