We help IT Professionals succeed at work.

Trouble sending an email with multiple attachments using CDONTS

Mark Drelinger
on
I am trying to send an email with multiple attachments using CDONTS.
The code below sends the email, but never attaches anything.
I feel like I've got a vb script errror where I scroll through the record set rsEQUIPInvoicesAttach, which contains 2 records.
If I take that loop out of my code, I can manually create an email with multiple attachments, so I'm confident my CDO syntax is correct.

<% if (cStr(Request("Submit")) <> "") Then
Dim objCDO
Set objCDO = Server.CreateObject("CDONTS.NewMail")
objCDO.From = Request("varFrom")
objCDO.To = Request("varTo")
objCDO.Subject = "Invoices from Schmidt Equipment"
objCDO.Body = "Invoices from Schmidt Equipment"

While ((Repeat6__numRows <> 0) AND (NOT rsEQUIPInvoicesAttach.EOF))
           objCDO.AttachFile "C:\test.txt"
          Repeat6__index=Repeat6__index+1
              Repeat6__numRows=Repeat6__numRows-1
        rsEQUIPInvoicesAttach.MoveNext
       Wend        
            
objCDO.Send()
Set objCDO = Nothing
Response.Redirect("/menu.asp")

End If
%>
Comment
Watch Question

Author

Commented:
also, this is further up the page:
<%
Dim Repeat6__numRows
Dim Repeat6__index

Repeat6__numRows = -1
Repeat6__index = 0
rsEQUIPInvoicesAttach_numRows = rsEQUIPInvoicesAttach_numRows + Repeat6__numRows
%>

Author

Commented:
Also tried this but got "Either BOF or EOF is True, or the current record has been deleted". Recordset has two records.

<% if (cStr(Request("Submit")) <> "") Then
Dim objCDO
Set objCDO = Server.CreateObject("CDONTS.NewMail")
objCDO.From = Request("varFrom")
objCDO.To = Request("varTo")
objCDO.Subject = "Invoices from Schmidt Equipment"
objCDO.Body = "Invoices from Schmidt Equipment"

Do until Not rsEQUIPInvoices.EOF
     objCDO.AttachFile "C:\test.txt"
       rsEQUIPInvoices.MoveNext
Loop    
            
objCDO.Send()
Set objCDO = Nothing
Response.Redirect("/menu.asp")

End If
%>
Most Valuable Expert 2012
Top Expert 2014
Commented:
Hi, instead of this:
rsEQUIPInvoicesAttach_numRows = rsEQUIPInvoicesAttach_numRows + Repeat6__numRows

Open in new window


Wouldnt you need this, so you're setting your loop control, Repeat6_numRows, to something.

Repeat6_numRows = rsEQUIPInvoicesAttach.numRows

Rob

Author

Commented:
I think the issue was more the placement of my code within the page - when it ran that routine, the recordset was null.  Your comment was helpful none the less. Regards, Mark Drelinger
Most Valuable Expert 2012
Top Expert 2014

Commented:
OK cool.  I couldn't see where Repeat6_numRows was being set as a positive number, so just wanted to point that out.

Good to see you have it sorted now.

Regards,

Rob.