---
title: "Cdonts string"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/7750-cdonts-string"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "costodia"
published: "2001-01-14T22:45:00.000Z"
updated: "2001-01-17T09:55:00.000Z"
replies: 23
views: 458
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/7750-cdonts-string"
---

# Cdonts string

_Sida 1 av 2._

## #1 — costodia, 2001-01-14T22:45Z

Jag undrar om någon kan se vad jag gjort för fel i denna stringen

```
<%
Do Until Poster.EOF 
	
	Set Mailer = Server.CreateObject("CDONTS.NewMail")
	objMail.FromName = Request.Form("Sender")
	objMail.FromAddress = Request.Form("Epostsender")
	strMailHost = "mail.costodia.com"
	objMail.RemoteHost = strMailHost
	objMail.AddRecipient "Maillista", Poster("Epost")
	objMail.Subject = Request.Form("Rubrik")
	objMail.BodyText = Request.Form("Meddelande")

	 if CDONTS.NewMail then
    Response.Write ""
  else
    Response.Write "Ett fel uppstod. Kontakta webbmastern!<br>"
end if 
%>
```

så här ser orginalet ut:

```
<%
Do Until Poster.EOF 
	
	Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
	Mailer.FromName = Request.Form("Sender")
	Mailer.FromAddress = Request.Form("Epostsender")

' OBS !! GLÖM INTE ATT FYLLA I DIN SMTPSERVER NEDAN!

	strMailHost = "din.smtpserver.se"
	Mailer.RemoteHost = strMailHost
	Mailer.AddRecipient "Maillista", Poster("Epost")
	Mailer.Subject = Request.Form("Rubrik")
	Mailer.BodyText = Request.Form("Meddelande")

	 if Mailer.SendMail then
    Response.Write ""
  else
    Response.Write "Ett fel uppstod. Kontakta webbmastern!<br>"
end if 
%>
```

jag fattar inte vad jag gjort för fel, men det funkar inte.

Permalänk: https://www.webforum.nu/p/7750

## #2 — emission, 2001-01-14T22:51Z

Byt

Set Mailer = Server.CreateObject("CDONTS.NewMail")

till

Set objMail = Server.CreateObject("CDONTS.NewMail")

och 

if CDONTS.NewMail then

till

if objMail.Sendmail then

Precis som det står i originalkoden.

\[Redigerat av emission den 14 jan 2001\]

Permalänk: https://www.webforum.nu/p/253965

## #3 — costodia, 2001-01-15T08:22Z

Nu blir det inte det felet längre men nu klagar den på att 

```
Microsoft VBScript runtime error '800a01b6' 

Object doesn't support this property or method: 'FromName' 

/maillista/run.asp, line 38
```

 stödjer inte cdonts fromname?

Permalänk: https://www.webforum.nu/p/253966

## #4 — M@rtin, 2001-01-15T09:13Z

From heter det väl bara? Inte FromName! Så skriver jag iaf.

Permalänk: https://www.webforum.nu/p/253967

## #5 — Pontus, 2001-01-15T10:17Z

Bra artikel i ämnet...
 <http://www.asptoday.com/articles/19990415.htm> 

/Pontus

Permalänk: https://www.webforum.nu/p/253968

## #6 — costodia, 2001-01-15T10:50Z

Nu får jag istället felmedelandet 

```
Microsoft VBScript runtime error '800a01b6' 

Object doesn't support this property or method: 'RemoteHost' 

/maillista/run.asp, line 41
```

i artiklen på <http://www.asptoday.com/articles/19990415.htm>  står det inget om hur man ställer in smtpservern som jag kan se och det är tyvärr det som är problemet.
Koden ser ut så här nu 

```
<%
Do Until Poster.EOF 

Set objMail = Server.CreateObject("CDONTS.NewMail")
objMail.From = Request.Form("Sender")
objMail.From = Request.Form("Epostsender")
strMailHost = "mail.costodia.com"
objMail.RemoteHost = strMailHost
objMail.AddRecipient "Maillista", Poster("Epost")
objMail.Subject = Request.Form("Rubrik")
objMail.BodyText = Request.Form("Meddelande")
if objMail.Sendmail then
Response.Write ""
else
Response.Write "Ett fel uppstod. Kontakta webbmastern!<br>"
end if 
%>
```

och som jag förstår det så ligger felet i denna raden 

```
strMailHost = "mail.costodia.com"
objMail.RemoteHost = strMailHost
```

 någonstans men vad jag ska skriva istället för  RemoteHost förstår jag inte.

Permalänk: https://www.webforum.nu/p/253969

## #7 — Pontus, 2001-01-15T11:18Z

I din originalkod så använder du dig av ASPMail, och \_inte\_ cdonts...

Eftersom RemoteHost bara funkar just med ASPMail så är det nog därför du inte får det att fungera.

Jag har inte kört ASPMail själv, men här hittar du info om denna komponent: <http://www.serverobjects.com/products.htm#aspmail>  

Observera dock att ASPMail är en komponent som du måste installera på din webbserver.

/Pontus

Permalänk: https://www.webforum.nu/p/253970

## #8 — costodia, 2001-01-15T13:09Z

Tyvärr har jag bara ett webhotell så jag kan inte installera aspmail. 
Därföör tänkte jag att jag skulle kunna skriva om koden så att den funkar till cdonts det har gått förut så varför skulle det inte funka nu?

Permalänk: https://www.webforum.nu/p/253971

## #9 — Pontus, 2001-01-15T13:53Z

Det är klart att det går att skriva om den, men mitt tips är att börja med att kommentera bort "RemoteHost"...

Här är en bra kod att starta med. All data är statisk, men det är ju lätt att ändra efter behov...

\<%
'objekt
Set objMail = Server.CreateObject("CDONTS.Newmail")
'mottagare
objMail.To =  "mail@mail.com"                 
'avsändare
objMail.From = "mail@mail.com" 
'ämne
objMail.Subject = "Jo..."
'meddelande
objMail.Body = "Blargh!"
'skickar mailet
objMail.Send                          
'dödar objektet
Set objMail = Nothing                 
%\>

Slutligen:
Sök efter "cdonts" på <http://msdn.microsoft.com.>  Där finns all info du behöver. ;)

/Pontus

Permalänk: https://www.webforum.nu/p/253972

## #10 — costodia, 2001-01-15T20:20Z

Jag var inne på <http://msdn.microsoft.com>  och den är riktigt bra. Men jag hittade inte riktigt lösningen, du skriver att jag kan börja att kommentera bort remoteHost, jag är lite ny på asp så jag vet inte hur man gör så jag tänkte om du har lite tid skulle det hjälpa mig grymt mycket om du skrev ett exmepl på hur jag skulle kunna kommentera bort remoteHost.

Permalänk: https://www.webforum.nu/p/253973

## #11 — Pontus, 2001-01-16T14:31Z

Det jag menade var att du kan börja med att, i din kod, kommentera bort raderna som handlar om RemoteHost. (för att se om det funkar/om du får ett annat felmeddelande) 
För att kommentera bort en rad i asp så lägger du bara en ' (enkelfnutt) framför den rad du vill kommentera bort.

Om du sedan utgår från koden:

\<%
'objekt
Set objMail = Server.CreateObject("CDONTS.Newmail")
'mottagare
objMail.To = "mail@mail.com" 
'avsändare
objMail.From = "mail@mail.com" 
'ämne
objMail.Subject = "Jo..."
'meddelande
objMail.Body = "Blargh!"
'skickar mailet
objMail.Send 
'dödar objektet
Set objMail = Nothing 
%\>

..fast du byter såklart ut e-post adresser och dyl. mot din egen data, så kommer du kunna maila galant! ;)

Koden ovan är ganska "light", så om du vill ha mer kontroll/funktionalitet på ditt mailande så är det en tur till <http://msdn.microsoft.com>  som gäller. Där hittar du kodexempel och vilka ytterligare argument cdonts kan använda sig av. (t.ex. om mailen skall vara i html-format, vilken prioritet dom ska ha os.v...)

Lycka till!

/Pontus

Permalänk: https://www.webforum.nu/p/253974

## #12 — costodia, 2001-01-16T14:41Z

Jo jag brukar använda mig av en sådan kod.
Problemet är att detta är en mailinglista och det
ska skickas ut till
adresser som läses från en databas.
Vanligtvis när jag använder sevrern med aspmail på
så använder jag denna koden:

Function SendEmail( sEmailServer, sFromEmail,
sToEmail, sSubject, sText )
   Dim objMail
   set objMail =
server.createobject("SMTPsvg.Mailer")
   objMail.FromName = sFromEmail
   objMail.FromAddress = sFromEmail
   objMail.RemoteHost = sEmailServer
   objMail.AddRecipient sToEmail, sToEmail
   objMail.Subject = sSubject
   objMail.BodyText = sText
   if objMail.SendMail then
     SendEmail = ""
   else
      ' Message send failure
      SendEmail = objMail.Response
   end if
   Set objMail = nothing
End Function

och när jag sen byter till den andra servern så
brukar jag byta till dennna kod rakt av:

Function SendEmail( sEmailServer, sFromEmail,
sToEmail, sSubject, sText )
   Dim objMail
   Set objMail = CreateObject("CDONTS.NewMail")
   objMail.From = sFromEmail
   objMail.To = sToEmail
   objMail.Subject = sSubject
   objMail.Body = sText
   objMail.Send
   Set objMail = nothing
End Function

men när jag gör det nu så blir det :
Microsoft VBScript compilation  error '800a040e'

'loop' without 'do'

/maillista/run.asp, line 49

Loop
^

hela koden till run.asp ser ut så här

\<html\>

\<head\>
\<title\>Nu skickas breven ut....vänta....\</title\>
\</head\>

\<body bgcolor="#FFFFFF"
background="../images/bakbla.gif" text="#000000"\>

\<table border="0" width="600"\>
  \<tr\>
    \<td width="114"\>\</td\>
    \<td width="478"\>\<img
src="../../images/mailplatta.gif"
alt="mailplatta.gif (5653 bytes)"
    WIDTH="352" HEIGHT="94"\>\<p\>\<font
face="Verdana"\>\<small\>.....mailet skickas till de
    mottagare som finns i listan.\</small\>\<br\>
    \<small\>Sändningen kan ta en stund beroende på
hur många\</small\>\<br\>
    \<small\>som finns i listan\</small\>\</font\>\</p\>
    \<hr size="1" align="left" width="350"\>
    \<p\>&nbsp;\</td\>
    \<td\>\<br\>
    \</td\>
  \</tr\>
\</table\>
\<%
Listval=Request.Form("Listval")
Set Databas =
Server.CreateObject("ADODB.Connection")
Databas.Open ="DRIVER={Microsoft Access Driver
(\*.mdb)}; DBQ=" &
Server.MapPath("../../asp/maillista.mdb")
SQLStmt = "SELECT Distinct Epost FROM Lista WHERE
" & Listval &  " = 'True'"
Set Poster = Databas.Execute(SQLStmt)
%\>

\<table border="0" width="600"\>
  \<tr\>
    \<td width="114"\>\</td\>
    \<td width="478"\>\<font
face="Verdana"\>\<small\>Brevet skickat till följande
mottagare: \<p\>\<%
Function SendEmail( sEmailServer, sFromEmail,
sToEmail, sSubject, sText )
   Dim objMail
   Set objMail = CreateObject("CDONTS.NewMail")
   objMail.From = sFromEmail
   objMail.To = sToEmail
   objMail.Subject = sSubject
   objMail.Body = sText
   objMail.Send
   Set objMail = nothing
End Function
%\>\<strong\>
\<%= Poster("Epost")%\>    \<br\>
\<%
Poster.MoveNext
Loop
%\>    \</strong\>\</small\>\</font\>\</td\>
  \</tr\>
\</table\>
\<%Databas.Close%\>
\</body\>
\</html\>

Vanligtvis när jag ändrar på detta sätt så brukar
jag få ändra i den filen som jag matar in datan
som
sedan skcikas via cdontsfilen, i detta fallet
skulle det vara maila.asp

\<html\>

\<head\>
\<meta name="GENERATOR" content="Microsoft
FrontPage 3.0"\>
\<title\>Skicka ett brev\</title\>
\</head\>

\<body background="../../images/rodbakgrund.gif"
bgcolor="#FFFFFF"\>

\<table border="0" width="600"\>
  \<tr\>
    \<td width="122"\>\</td\>
    \<td width="470"\>\<img
src="../../images/mailplatta.gif"
alt="mailplatta.gif (5644 bytes)" WIDTH="352"
HEIGHT="94"\>\<p\>&nbsp;\</td\>
  \</tr\>
  \<tr\>
    \<td width="122"\>\</td\>
    \<td width="470" bgcolor="#CAE4FF"\>\<form
method="POST" action="run.asp"\>
      \<p\>\<font face="Verdana"\>\<small\>\<%%\>Välj den
lista du vill skicka till:\</small\>\<br\>
      \</font\>\<select name="listval" size="1"\>
        \<option value="Datorer"\>Datorer\</option\>
        \<option value="Mjukvara"\>Mjukvara\</option\>
        \<option
value="Tillbehor"\>Tillbehor\</option\>
        \<option value="Spel"\>Spel\</option\>
      \</select\>\</p\>
      \<p\>\<font face="Verdana"\>\<small\>Skriv in en
rubrik på meddelandet:\</small\>\<br\>
      \<input type="text" name="Rubrik"
size="30"\>\</font\>\</p\>
      \<p\>\<small\>\<font face="Verdana"\>Skriv in
meddelandet:\</font\>\</small\>\</p\>
      \<p\>\<textarea rows="10" name="meddelande"
cols="50"\>\</textarea\>\</p\>
      \<p\>\<font face="Verdana"\>\<small\>Välj namn på
avsändare:\</small\>\<br\>
      \</font\>\<input type="text" name="sender"
size="30" value="Intermedia Publishing AB"\>\</p\>
      \<p\>\<font face="Verdana"\>\<small\>Välj
e-postadress på avsändare:\</small\>\<br\>
      \</font\>\<input type="text" name="epostsender"
size="30" value="martin3@home.se"\>\</p\>
      \<p\>\<input type="submit" value="Skicka"
name="B1"\>\<input type="reset" value="Rensa"
name="B2"\>\</p\>
    \</form\>
    \</td\>
  \</tr\>
\</table\>
\</body\>
\</html\>

Men här hittar jag inget lämpligt ställe att lägga
in smtpserver på.
Scriptet är hämtat från <http://www.idg.se/mikrodatorn/webbmastern/md9804/> 
Att tillägga är att jag har testat så att cdonts
funkar, så det är inte cdonts som krånglar det vet
jag.

Mvh Martin

Permalänk: https://www.webforum.nu/p/253975

## #13 — murofbew, 2001-01-16T14:48Z

Jag har haft liknknde problem och då var rättigheterna till mappen "mailroot" felaktigt satta. Jag har också för mig att det finns inställningar i IIS manager där man kan ange "default SMTP-server" dvs man behöver inte ange detta i skriptet. Jag reserverar mig för dessa uppgifter då det var ett tag sedan jag pysslade med detta.

Permalänk: https://www.webforum.nu/p/253976

## #14 — Pontus, 2001-01-16T15:00Z

Enligt ditt felmeddelande så har du nog glömt att säga hur länge scriptet ska loopa -  t.ex: "Do until rs.EOF" innan
du kallar på "loop"...

/Pontus

Permalänk: https://www.webforum.nu/p/253977

## #15 — costodia, 2001-01-16T15:02Z

nu ser koden ut så här istället

```
<%
Listval=Request.Form("Listval")
Set Databas = Server.CreateObject("ADODB.Connection")
Databas.Open ="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../asp/maillista.mdb") 
SQLStmt = "SELECT Distinct Epost FROM Lista WHERE " & Listval &  " = 'True'"
Set Poster = Databas.Execute(SQLStmt)
%>

<table border="0" width="600">
  <tr>
    <td width="114"></td>
    <td width="478"><font face="Verdana"><small>Brevet skickat till följande mottagare: <p><%
Function SendEmail( sEmailServer, sFromEmail,sToEmail, sSubject, sText )
   Dim objMail
   Set objMail = CreateObject("CDONTS.NewMail")
   objMail.From = sFromEmail
   objMail.Subject = sSubject
   objMail.Body = sText
Do until rs.EOF
for i = 0 to UBound
   objMail.To = sToEmail(i)
   objMail.Send
Next
   Set objMail = nothing
End Function
End Function
%><strong>
<%= Poster("Epost")%>    <br>
<% 
Poster.MoveNext 
Do until rs.EOF
Loop 
%>    </strong></small></font></td>
  </tr>
</table>
<%Databas.Close%>
```

men nu kommer det istället upp 

```
Brevet skickat till följande mottagare:

costo@yesbox.net

Microsoft VBScript runtime error '800a01a8'

Object required: ''

/maillista/run.asp, line 51
```

Linje 51 är denna:
Do until rs.EOF
vad är det för objekt jag ska lägga in där?

\[Redigerat av costodia den 16 jan 2001\]

Permalänk: https://www.webforum.nu/p/253978

## #16 — costodia, 2001-01-16T15:17Z

äntligen så verkar det funka lite bättre  

det är bara ett litet felmeddelande kvar 

```
Microsoft VBScript runtime  error '800a01a8'

Object required: ''

/maillista/run.asp, line 51
```

vad är detta för objekt som saknas?

Permalänk: https://www.webforum.nu/p/253979

## #17 — emission, 2001-01-16T17:13Z

Du skapar aldrig ett recordset som heter rs. Ditt recordset heter Poster.

Det fanns en hel del fel i koden.

Do until rs.EOF \<- vilket recordset, var kommer det ifrån?
for i = 0 to UBound \<---UBound vadå? UBound kräver en array som argument
objMail.To = sToEmail(i) \<---Här är Arrayen
objMail.Send
Next
Set objMail = nothing
End Function
End Function  \<---Du kan inte ha två end function
%\>\<strong\>
\<%= Poster("Epost")%\> \<br\>
\<% 
Poster.MoveNext 
Do until rs.EOF
Loop \<-----   Här gör du en loop helt i onödan, med ett recordset som inte finns

Jag menar inte att kritisera, men det är bättre att påvisa felen än att bara visa en lösning.

Lösningen kommer här:

```
<%
Listval=Request.Form("Listval")
Set Databas = Server.CreateObject("ADODB.Connection")
Databas.Open ="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../asp/maillista.mdb") 
SQLStmt = "SELECT Distinct Epost FROM Lista WHERE " & Listval & " = 'True'"
Set Poster = Databas.Execute(SQLStmt)
%>
<table border="0" width="600">
<tr>
<td width="114"></td>
<td width="478"><font face="Verdana"><small>Brevet skickat till följande mottagare: <p><%
%><strong>
<%do until Poster.EOF
SendEmail "din.server","sändaradress",Poster("Epost"),"Ämnet","Texten"
%>
<%= Poster("Epost")%> <br>
<% 
Poster.Movenext
Loop
%> </strong></small></font></td>
</tr>
</table>
<%
Databas.Close

Sub SendEmail(sFromEmail,sToEmail,sSubject,sText)
Dim objMail
Set objMail = Server.CreateObject("CDONTS.NewMail")
objMail.From = sFromEmail
objMail.Subject = sSubject
objMail.Body = sText
objMail.To = sToEmail
objMail.Send
Set objMail = nothing
End Function

%>
```

Kommentar:

Det är ditt skript, med lite omflyttningar. Epost-adresserna hämtas ur databasen, och skickas en och en till subrutinen SendEmail, som skickar dem. Eftersom subrutinen inte returnerar något värde (vilket i och för sig skulle vara vettigt) så är det en Sub, och inte en Function.

\[Redigerat av emission den 16 jan 2001\]

Permalänk: https://www.webforum.nu/p/253980

## #18 — costodia, 2001-01-16T18:19Z

Tack så mycket för svaret,
tyvärr blir det endå 

```
Microsoft VBScript compilation error '800a03f8' 

Expected 'Sub' 

/maillista/run.asp, line 34 

End Function
----^
```

vad har jag gjort fel?
jag skrev skriptet precis som du beskrev. alltså så här ser hela run.asp ut:

```
<%
Listval=Request.Form("Listval")
Set Databas = Server.CreateObject("ADODB.Connection")
Databas.Open ="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../asp/maillista.mdb") 
SQLStmt = "SELECT Distinct Epost FROM Lista WHERE " & Listval & " = 'True'"
Set Poster = Databas.Execute(SQLStmt)
%>
<table border="0" width="600">
<tr>
<td width="114"></td>
<td width="478"><font face="Verdana"><small>Brevet skickat till följande mottagare: <p><%
%><strong>
<%do until Poster.EOF
SendEmail "mail.costodia.com","sändaradress",Poster("Epost"),"Ämnet","Texten"
%>
<%= Poster("Epost")%> <br>
<% 
Poster.Movenext
Loop
%> </strong></small></font></td>
</tr>
</table>
<%
Databas.Close
Sub SendEmail(sFromEmail,sToEmail,sSubject,sText)
Dim objMail
Set objMail = Server.CreateObject("CDONTS.NewMail")
objMail.From = sFromEmail
objMail.Subject = sSubject
objMail.Body = sText
objMail.To = sToEmail
objMail.Send
Set objMail = nothing
End Function

%>
```

är inte det rätt?

Permalänk: https://www.webforum.nu/p/253981

## #19 — emission, 2001-01-16T19:14Z

Glömde att ändra End Function till End Sub

Permalänk: https://www.webforum.nu/p/253982

## #20 — costodia, 2001-01-16T20:47Z

Nu fattar jag ingenting längre eftersom netscape har slutat ge felmeddelande testa gärna själv på <http://www.costodia.com/maillista/maila.asp>  koden ser nu ut så här

```
<%
Listval=Request.Form("Listval")
Set Databas = Server.CreateObject("ADODB.Connection")
Databas.Open ="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../asp/maillista.mdb") 
SQLStmt = "SELECT Distinct Epost FROM Lista WHERE " & Listval & " = 'True'"
Set Poster = Databas.Execute(SQLStmt)
%>
<table border="0" width="600">
<tr>
<td width="114"></td>
<td width="478"><font face="Verdana"><small>Brevet skickat till följande mottagare: <p><%
%><strong>
<%do until Poster.EOF
SendEmail "mail.costodia.com","epostsender",Poster("Epost"),"Ämnet","Texten"
%>
<%= Poster("Epost")%> <br>
<% 
Poster.Movenext
Loop
%> </strong></small></font></td>
</tr>
</table>
<%
Databas.Close
Sub SendEmail(sFromEmail,sToEmail,sSubject,sText)
Dim objMail
Set objMail = Server.CreateObject("CDONTS.NewMail")
objMail.From = sFromEmail
objMail.Subject = sSubject
objMail.Body = sText
objMail.To = sToEmail
objMail.Send
Set objMail = nothing
End Sub

%>
```

Permalänk: https://www.webforum.nu/p/253983

---

Tråden på webben: https://www.webforum.nu/amne/asp/7750-cdonts-string  
Nästa sida: https://www.webforum.nu/amne/asp/7750-cdonts-string/page2.md
