Hej! Du har ju dubbla SQL:er! Men i den första SQL:en så plockar jag ju fram alla prenumeranter dvs. alla e-postadresser som jag ska skicka till och i den andra SQL:en plockar jag fram själva menyn som ska skrivas ut i meddelandet. Ditt problem ligger nog snarare på att du aldrig "tömmer" din variabel HTMLDubbla meddelanden i nyhetsbrev
Håller på med ett nyhetsbrev som skall skicka ut veckans lunchmeny. Brevet går iväg men nr 1 i databasen får ett meddelande och nr 2 dubbla och nr 3 tre st osv.
Någon som vet varför?
För att skicka brevet gör jag följande:
<!-- #include file = "../include/functions.asp" -->
<%
'Formulärvärden tas emot och läggs i variabler
strID = Request.Form("week")
'Instansiering av connectionobjekt
Call dbOpen(Connect)
'Plockar fram prenumeranter
sqlMail = "Select * From t_lunchmenu_list"
Set objRsMail = Connect.Execute(sqlMail)
'Skriver ut ett meddelande om det inte finns några prenumeranter i db
If objRsMail.EOF Then
Response.Write "Dett finns inga prenumeranter!"
Else
'Plockar fram menyn som skall skickas
sqlMenu = "Select * From t_lunchmenu Where ID="& strID &""
Set objRsMenu = Connect.Execute(sqlMenu)
Do Until objRsMail.EOF
'Instansiering av mailkomponenten CDONTS
Set objMail = Server.CreateObject("CDONTS.NewMail")
HTML = HTML & "<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.0 Transitional//EN"">"& vbCrLf
HTML = HTML & "<html>"& vbCrLf
HTML = HTML & "<head>"& vbCrLf
HTML = HTML & "<title>Test</title>"& vbCrLf
HTML = HTML & "<meta http-equiv=""Content-Type"" content=""text/html; charset=iso-8859-1"">"& vbCrLf
HTML = HTML & "</head>"& vbCrLf
HTML = HTML & "<body>"& vbCrLf & vbCrLf
HTML = HTML & ""& objRsMenu("m_Text") &"" & vbCrLf
HTML = HTML & "</body>" & vbCrLf
HTML = HTML & "</html>"
objMail.From = "x@doman.se"
objMail.To = objRsMail("l_Mail")
objMail.Subject = "Ämnet"
objMail.BodyFormat = 0
objMail.MailFormat = 0
objMail.Body = HTML
objMail.Send
Set objMail = Nothing
objRsMail.MoveNext
Loop
objRsMenu.Close : Set objRsMenu = Nothing
End If
objRsMail.Close : Set objRsMail = Nothing
Call dbClose(Connect)
Response.Redirect "confirm.asp?action=menusend"
%>Sv: Dubbla meddelanden i nyhetsbrev
'Skriver ut ett meddelande om det inte finns några prenumeranter i db
If objRsMail.EOF Then
Response.Write "Dett finns inga prenumeranter!"
Else
'Plockar fram menyn som skall skickas
sqlMenu = "Select * From t_lunchmenu Where ID="& strID &""
Set objRsMenu = Connect.Execute(sqlMenu)
'du har ju redan kollat så att
'det finns poster, då behöver du inte hämta igen.
Do Until objRsMail.EOF
Läs min komentar.
Sen igen...
Jag är väldigt alärgisk mot att använda astrix dvs *.
Du ökar prestandarden på servern genom att namnge de fält som du vill ha. Databasen behöver inte
leta efter vad som finns i tabellen, och du har samtidigt en kontroll över stavning osv.
Gör dig själv den tjänsten att bara ta fram de fält du vill ha, och även om du behöver alla
så namnge dom, du tjänar på det i längden.
Sv:Dubbla meddelanden i nyhetsbrev
Är det fel att göra så? hur ska man annars göra? eller hur menar du?
Ps. Tack för tipset med astrix, ska tänka på det.Sv: Dubbla meddelanden i nyhetsbrev
Do Until objRsMail.EOF
'Instansiering av mailkomponenten CDONTS
Set objMail = Server.CreateObject("CDONTS.NewMail")
--> HTML = HTML & "<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.0 Transitional//EN"">"& vbCrLf
HTML = HTML & "<html>"& vbCrLf
HTML = HTML & "<head>"& vbCrLf
HTML = HTML & "<title>Test</title>"& vbCrLf
HTML = HTML & "<meta http-equiv=""Content-Type"" content=""text/html; charset=iso-8859-1"">"& vbCrLf
HTML = HTML & "</head>"& vbCrLf
HTML = HTML & "<body>"& vbCrLf & vbCrLf
HTML = HTML & ""& objRsMenu("m_Text") &"" & vbCrLf
HTML = HTML & "</body>" & vbCrLf
HTML = HTML & "</html>"
objMail.From = "x@doman.se"
objMail.To = objRsMail("l_Mail")
objMail.Subject = "Ämnet"
objMail.BodyFormat = 0
objMail.MailFormat = 0
objMail.Body = HTML
objMail.Send
Set objMail = Nothing
objRsMail.MoveNext
Loop
borde kanske bli:
Do Until objRsMail.EOF
'Instansiering av mailkomponenten CDONTS
Set objMail = Server.CreateObject("CDONTS.NewMail")
HTML = "<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.0 Transitional//EN"">"& vbCrLf
HTML = HTML & "<html>"& vbCrLf
HTML = HTML & "<head>"& vbCrLf
HTML = HTML & "<title>Test</title>"& vbCrLf
HTML = HTML & "<meta http-equiv=""Content-Type"" content=""text/html; charset=iso-8859-1"">"& vbCrLf
HTML = HTML & "</head>"& vbCrLf
HTML = HTML & "<body>"& vbCrLf & vbCrLf
HTML = HTML & ""& objRsMenu("m_Text") &"" & vbCrLf
HTML = HTML & "</body>" & vbCrLf
HTML = HTML & "</html>"
objMail.From = "x@doman.se"
objMail.To = objRsMail("l_Mail")
objMail.Subject = "Ämnet"
objMail.BodyFormat = 0
objMail.MailFormat = 0
objMail.Body = HTML
objMail.Send
Set objMail = Nothing
objRsMail.MoveNext
Loop
Edit:
Det verkar lite onödigt att skapa om ditt meddelande mellan varje prenumerant så detta kanske är en bättre lösning:
<%
'Formulärvärden tas emot och läggs i variabler
strID = Request.Form("week")
'Instansiering av connectionobjekt
Call dbOpen(Connect)
'Plockar fram prenumeranter
sqlMail = "Select * From t_lunchmenu_list"
Set objRsMail = Connect.Execute(sqlMail)
'Skriver ut ett meddelande om det inte finns några prenumeranter i db
If objRsMail.EOF Then
Response.Write "Dett finns inga prenumeranter!"
Else
'Plockar fram menyn som skall skickas
sqlMenu = "Select * From t_lunchmenu Where ID="& strID &""
Set objRsMenu = Connect.Execute(sqlMenu)
HTML = & "<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.0 Transitional//EN"">"& vbCrLf
HTML = HTML & "<html>"& vbCrLf
HTML = HTML & "<head>"& vbCrLf
HTML = HTML & "<title>Test</title>"& vbCrLf
HTML = HTML & "<meta http-equiv=""Content-Type"" content=""text/html; charset=iso-8859-1"">"& vbCrLf
HTML = HTML & "</head>"& vbCrLf
HTML = HTML & "<body>"& vbCrLf & vbCrLf
HTML = HTML & ""& objRsMenu("m_Text") &"" & vbCrLf
HTML = HTML & "</body>" & vbCrLf
HTML = HTML & "</html>"
Do Until objRsMail.EOF
'Instansiering av mailkomponenten CDONTS
Set objMail = Server.CreateObject("CDONTS.NewMail")
objMail.From = "x@doman.se"
objMail.To = objRsMail("l_Mail")
objMail.Subject = "Ämnet"
objMail.BodyFormat = 0
objMail.MailFormat = 0
objMail.Body = HTML
objMail.Send
Set objMail = Nothing
objRsMail.MoveNext
Loop
objRsMenu.Close : Set objRsMenu = Nothing
End If
objRsMail.Close : Set objRsMail = Nothing
Call dbClose(Connect)
Response.Redirect "confirm.asp?action=menusend"
%>