1. Om jag vill bygga ett nyhetsbrev med CDONTS, hur kan man bäst loopa igenom en databas så mailet skickas till alla i databasen? Jag funderade på att antingen loopa igenom hela CDONTS-koden och hämta en ny variabel för To-fältet tills databasen är tömd, vilket borde ta ganska mkt kraft och ta lång tid. Alternativet, kom jag fram till, borde vara att loopa igenom databasen och lägga till alla mailadresser i To-fältet och skicka. Vad är bäst?
2. Hur ändrar man mail-adress i To-fältet så det ser ut som att nyhetsbrevet bara skickas till t ex mail@mail.com fast det kanske skickas till jättemånga adresser?
Vad tror ni, vad blir bäst och hur skulle det bäst kunna kodas?
En annan fråga inom samma ämne, varför kan jag inte bunta ihop värden i min array (dvs alla e-postadresser) på det här sättet:
<%
Dim myMail
Dim HTML
Set myMail = CreateObject("CDONTS.NewMail")
HTML = "<HTML>Hej hej!<HTML>"
dim rs,objconn
set objconn = server.createobject("ADODB.connection")
objconn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("data.mdb")
set rs = server.createobject("ADODB.recordset")
sqlOpen = "SELECT epost FROM kund;"
rs.open sqlOpen, objconn, adlockoptimistic
IF NOT rs.EOF THEN arrRecords = rs.GetRows
rs.close
set rs = nothing
objConn.close
set objConn = nothing
[B]string = Join(arrRecords,";")[/B]
myMail.From="mail@mail.com"
myMail.To=string
myMail.Subject="Nyhetsbrev!"
myMail.BodyFormat=0
myMail.MailFormat=0
myMail.Body=HTML
myMail.Send
set mymail=nothing
Response.Write "Message Sent"
%>
Får felmeddelandet: "Type mismatch: 'Join'". Hur ska jag göra?
Tackar för svaren!
Ja, de e-postadresser som finns i DB:n är mina allihopa så jag vet att de funkar. Alltså mitt script funkar om jag loopar hela skiten liksom, men det vill jag inte göra. Det måste gå att loopa ut alla mailadresser enbart så det tar så lite kraft som möjligt, eller då alltså lägga dom i en array och sen skriva ut dem. Vilket som.
Nu ändrade jag till getstring men det funkade inte:
<%
Dim myMail
Dim HTML
Set myMail = CreateObject("CDONTS.NewMail")
HTML = "<HTML>Hej hej!<HTML>"
dim rs,objconn
set objconn = server.createobject("ADODB.connection")
objconn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("data.mdb")
set rs = server.createobject("ADODB.recordset")
sqlOpen = "SELECT epost FROM kund;"
rs.open sqlOpen, objconn, adlockoptimistic
IF NOT rs.EOF THEN arrRecords = [B]rs.GetString[/B]
rs.close
set rs = nothing
objConn.close
set objConn = nothing
string = Join(arrRecords,";") ' <-- Rad 26
myMail.From="mail@mail.com"
myMail.To=string
myMail.Subject="Nyhetsbrev!"
myMail.BodyFormat=0
myMail.MailFormat=0
myMail.Body=HTML
myMail.Send
set mymail=nothing
Response.Write "Message Sent"
%>
Eller använder jag getstring fel på nåt sätt? Jag får fortfarande felmeddelandet "Type mismatch: 'Join'" på rad 26.
Ja asså du menar det här: "rs.GetString(, , , ";" , )"
Jag får syntax error då. Jag har testat en massa olika och kollat msdn (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdmthgetstringmethod(recordset)ado.asp) men jag lyckas inte. Helt utan parametrar skriver den ut e-postadresserna men med ett mellanslag mellan varje, hur får man ett ; mellan varje?
Red. Och just det, jag tog bort join-prylen. Tackar!
En anledning till att du får syntax error kan vara att vbscript-tolken inte tycker om att första parametern i ett funktionsanrop utelämnas, även om den är optional.
Microsoft VBScript compilation error '800a03ea'
Syntax error
/test.asp, line 17
IF NOT rs.EOF THEN arrRecords = rs.GetString(adClipString, , ,";", )
-------------------------------------------------------------------^