Attachment Using CDO.MESSAGE

R

RN1

An ASP page first creates a MS-Word (doc) document using the values
received from a HTML Form & then mails this doc file as an attachment
for which I am using CDO.MESSAGE but the line

cdoMessage.AddAttachment Server.MapPath(strFile)

generates the following error:

The process cannot access the file because it is being used by another
process.

which points to the AddAttachment line (shown above).

How do I overcome this error?
 
A

Anthony Jones

RN1 said:
An ASP page first creates a MS-Word (doc) document using the values
received from a HTML Form & then mails this doc file as an attachment
for which I am using CDO.MESSAGE but the line

cdoMessage.AddAttachment Server.MapPath(strFile)

generates the following error:

The process cannot access the file because it is being used by another
process.

which points to the AddAttachment line (shown above).

How do I overcome this error?

You'll have a Word application object still holding the file open. As the
link that Bob has posted in a later thread indicates, this not a good idea.
 
R

RN1

You'll have a Word application object still holding the file open. As the
link that Bob has posted in a later thread indicates, this not a good idea.

Anthony, if I am not mistaken, what Bob has suggested is very much
different to what I want to do here. What Bob has suggested that is
for opening a Word file using ASP but here I want to first create the
Word document (which I have taken care of) & then mail it as an
attachment. At no point do I want to open that Word document that ASP
creates.

Anyway, how do I ensure that the Word object is not holding the file
open?

I remember doing the same thing but using CDONTS.MAIL (instead of
CDO.MESSAGE) to send the mail & the mail was delivered successfully
along with the attachment. The problem creeps up when I use
CDO.MESSAGE.
 
R

RN1

Anthony, if I am not mistaken, what Bob has suggested is very much
different to what I want to do here. What Bob has suggested that is
for opening a Word file using ASP but here I want to first create the
Word document (which I have taken care of) & then mail it as an
attachment. At no point do I want to open that Word document that ASP
creates.

Anyway, how do I ensure that the Word object is not holding the file
open?

I remember doing the same thing but using CDONTS.MAIL (instead of
CDO.MESSAGE) to send the mail & the mail was delivered successfully
along with the attachment. The problem creeps up when I use
CDO.MESSAGE.- Hide quoted text -

- Show quoted text -

Anyone?

Ron
 
A

Anthony Jones

RN1 said:
Anthony, if I am not mistaken, what Bob has suggested is very much
different to what I want to do here. What Bob has suggested that is
for opening a Word file using ASP but here I want to first create the
Word document (which I have taken care of) & then mail it as an
attachment. At no point do I want to open that Word document that ASP
creates.

Please post the code that creates the Word document.
Anyway, how do I ensure that the Word object is not holding the file
open?


My advice is don't use Office objects in ASP.
 
R

RN1

An ASP page first creates a MS-Word (doc) document using the values
received from a HTML Form & then mails this doc file as an attachment
for which I am using CDO.MESSAGE but the line
cdoMessage.AddAttachment Server.MapPath(strFile)
generates the following error:
The process cannot access the file because it is being used by another
process.
which points to the AddAttachment line (shown above).
How do I overcome this error?
You'll have a Word application object still holding the file open.  As the
link that Bob has posted in a later thread indicates, this not a good
idea.
Anthony, if I am not mistaken, what Bob has suggested is very much
different to what I want to do here. What Bob has suggested that is
for opening a Word file using ASP but here I want to first create the
Word document (which I have taken care of) & then mail it as an
attachment. At no point do I want to open that Word document that ASP
creates.

Please post the code that creates the Word document.


Anyway, how do I ensure that the Word object is not holding the file
open?

My advice is don't use Office objects in ASP.

Here is the code that creates the Word document Anthony:

======================================
<%
Dim strParty,strNewFile,strFolderPath

strParty=Request.Form(strParty)
strNewFile="LETTERS\Letter" & Replace(strParty," ","") & ".doc"
strFolderPath="LETTERS"

Dim objFSO,objFolder,objFile
Set objFSO=Server.CreateObject("SCRIPTING.FILESYSTEMOBJECT")
Set objFolder=objFSO.GetFolder(Server.MapPath(strFolderPath))

Const ForAppending=8
Const ForWriting=2

If Not(objFSO.FileExists(Server.MapPath(strNewFile))) Then
Set objFile=objFSO.CreateTextFile(Server.MapPath(strNewFile))
Else
Set
objFile=objFSO.OpenTextFile(Server.MapPath(strNewFile),ForWriting)
End If

objFile.WriteLine("............")
objFile.WriteLine("............")
objFile.WriteLine("............")

'e-mail code using CDO.MESSAGE to send
'the DOC file as an attachment comes here

'deleting the DOC document after 5 hours
For Each objFile In objFolder.Files
If(InStr(objFile.Name,".doc")>0) Then
If(DateDiff("n",objFile.DateLastModified,Now())>300) Then
objFile.Delete
End If
End If
Next

Set objFile=Nothing
Set objFSO=Nothing
======================================

Then how does one send Office documents as attachments in ASP?

Thanks,

Ron
 
A

Anthony Jones

An ASP page first creates a MS-Word (doc) document using the values
received from a HTML Form & then mails this doc file as an attachment
for which I am using CDO.MESSAGE but the line
cdoMessage.AddAttachment Server.MapPath(strFile)
generates the following error:
The process cannot access the file because it is being used by another
process.
which points to the AddAttachment line (shown above).
How do I overcome this error?
You'll have a Word application object still holding the file open. As the
link that Bob has posted in a later thread indicates, this not a good
idea.
Anthony, if I am not mistaken, what Bob has suggested is very much
different to what I want to do here. What Bob has suggested that is
for opening a Word file using ASP but here I want to first create the
Word document (which I have taken care of) & then mail it as an
attachment. At no point do I want to open that Word document that ASP
creates.

Please post the code that creates the Word document.


Anyway, how do I ensure that the Word object is not holding the file
open?

My advice is don't use Office objects in ASP.
Here is the code that creates the Word document Anthony:
<%
Dim strParty,strNewFile,strFolderPath

strParty=Request.Form(strParty)
strNewFile="LETTERS\Letter" & Replace(strParty," ","") & ".doc"
strFolderPath="LETTERS"

Dim objFSO,objFolder,objFile
Set objFSO=Server.CreateObject("SCRIPTING.FILESYSTEMOBJECT")
Set objFolder=objFSO.GetFolder(Server.MapPath(strFolderPath))

Const ForAppending=8
Const ForWriting=2

If Not(objFSO.FileExists(Server.MapPath(strNewFile))) Then
Set objFile=objFSO.CreateTextFile(Server.MapPath(strNewFile))
Else
Set
objFile=objFSO.OpenTextFile(Server.MapPath(strNewFile),ForWriting)
End If

<<<<<<<<

The above can be reduced to:-

Set objFile=objFSO.OpenTextFile(Server.MapPath(strNewFile),ForWriting, True)

There is no need to test for FileExist.

objFile.WriteLine("............")
objFile.WriteLine("............")
objFile.WriteLine("............")

<<<<<<<<

Where is objFile.Close ?

I'm no expert in office file formats but it surprises me that you can write
a word document using a text stream object.
'e-mail code using CDO.MESSAGE to send
'the DOC file as an attachment comes here

'deleting the DOC document after 5 hours
For Each objFile In objFolder.Files
If(InStr(objFile.Name,".doc")>0) Then
If(DateDiff("n",objFile.DateLastModified,Now())>300) Then
objFile.Delete
End If
End If
Next

Set objFile=Nothing
Set objFSO=Nothing
<<<<<<<<
Then how does one send Office documents as attachments in ASP?


You're not using office objects so don't worry about it.
 
R

RN1

<%
    Dim strParty,strNewFile,strFolderPath

    strParty=Request.Form(strParty)
    strNewFile="LETTERS\Letter" & Replace(strParty," ","") & ".doc"
    strFolderPath="LETTERS"

    Dim objFSO,objFolder,objFile
    Set objFSO=Server.CreateObject("SCRIPTING.FILESYSTEMOBJECT")
    Set objFolder=objFSO.GetFolder(Server.MapPath(strFolderPath))

    Const ForAppending=8
    Const ForWriting=2

    If Not(objFSO.FileExists(Server.MapPath(strNewFile))) Then
        Set objFile=objFSO.CreateTextFile(Server.MapPath(strNewFile))
    Else
        Set
objFile=objFSO.OpenTextFile(Server.MapPath(strNewFile),ForWriting)
    End If

<<<<<<<<

The above can be reduced to:-

Set objFile=objFSO.OpenTextFile(Server.MapPath(strNewFile),ForWriting, True)

There is no need to test for FileExist.



    objFile.WriteLine("............")
    objFile.WriteLine("............")
    objFile.WriteLine("............")

<<<<<<<<

Where is objFile.Close ?

I'm no expert in office file formats but it surprises me that you can write
a word document using a text stream object.



    'e-mail code using CDO.MESSAGE to send
    'the DOC file as an attachment comes here

    'deleting the DOC document after 5 hours
    For Each objFile In objFolder.Files
        If(InStr(objFile.Name,".doc")>0) Then
            If(DateDiff("n",objFile.DateLastModified,Now())>300) Then
                objFile.Delete
            End If
        End If
    Next

    Set objFile=Nothing
    Set objFSO=Nothing
<<<<<<<<


You're not using office objects so don't worry about it.

You have hit the nail on the head, Anthony. objFile.Close was what was
missing which caused that error. Thanks a lot of your help.

Why does that surprise you, Anthony?

Thanks once again,

Regards,

Ron
 
B

Bob Lehmann

Why does that surprise you, Anthony?
Because Word documents are a proprietary, binary format, as opposed to plain
text.

Create a file in Notepad as something.doc. Now open it, and try to save it
in Word, to see what I mean.

Bob Lehmannn

<%
Dim strParty,strNewFile,strFolderPath

strParty=Request.Form(strParty)
strNewFile="LETTERS\Letter" & Replace(strParty," ","") & ".doc"
strFolderPath="LETTERS"

Dim objFSO,objFolder,objFile
Set objFSO=Server.CreateObject("SCRIPTING.FILESYSTEMOBJECT")
Set objFolder=objFSO.GetFolder(Server.MapPath(strFolderPath))

Const ForAppending=8
Const ForWriting=2

If Not(objFSO.FileExists(Server.MapPath(strNewFile))) Then
Set objFile=objFSO.CreateTextFile(Server.MapPath(strNewFile))
Else
Set
objFile=objFSO.OpenTextFile(Server.MapPath(strNewFile),ForWriting)
End If

<<<<<<<<

The above can be reduced to:-

Set objFile=objFSO.OpenTextFile(Server.MapPath(strNewFile),ForWriting, True)

There is no need to test for FileExist.



objFile.WriteLine("............")
objFile.WriteLine("............")
objFile.WriteLine("............")

<<<<<<<<

Where is objFile.Close ?

I'm no expert in office file formats but it surprises me that you can write
a word document using a text stream object.



'e-mail code using CDO.MESSAGE to send
'the DOC file as an attachment comes here

'deleting the DOC document after 5 hours
For Each objFile In objFolder.Files
If(InStr(objFile.Name,".doc")>0) Then
If(DateDiff("n",objFile.DateLastModified,Now())>300) Then
objFile.Delete
End If
End If
Next

Set objFile=Nothing
Set objFSO=Nothing
<<<<<<<<


You're not using office objects so don't worry about it.

You have hit the nail on the head, Anthony. objFile.Close was what was
missing which caused that error. Thanks a lot of your help.
write a word document using a text stream object.

Why does that surprise you, Anthony?

Thanks once again,

Regards,

Ron
 
R

RN1

Because Word documents are a proprietary, binary format, as opposed to plain
text.

Create a file in Notepad as something.doc. Now open it, and try to save it
in Word, to see what I mean.

Bob Lehmannn
















You have hit the nail on the head, Anthony. objFile.Close was what was
missing which caused that error. Thanks a lot of your help.

write a word document using a text stream object.

Why does that surprise you, Anthony?

Thanks once again,

Regards,

Ron- Hide quoted text -

- Show quoted text -

OK....now I understand why Anthony found that surprising but Bob when
I created a "doc" document in the way you have suggested (i.e. first
creating a "doc" file in NotePad & then saving it in Word) & then
opened it in Word, Word generated the following message:

============================================
Microsoft Word needs a converter to display the file correctly.
============================================

Word also generated another message when I tried to save it but when I
opened & saved the doc file which I created using the text stream
object, Word didn't generate any message. So does that mean that the
doc file created with the text stream object was created in the
correct binary format?

Thanks,

Ron
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,776
Messages
2,569,603
Members
45,189
Latest member
CryptoTaxSoftware

Latest Threads

Top