webForumDet fria alternativet

Jmailtrubbel

ASP

17 svar · 480 visningar · startad av Bire

Medlem sedan dec. 199919 074 inlägg
Frågan#1

Jag håller på med en maillista och vill att Jmail ska skicka till samtliga mottagare från en accessdb.
Efter att ha läst denna tråd: http://cgi.webforum.nu/wf/Forum11/HTML/000777.html så blev jag bara ännu mer förvirrad ;)

Så här har jag fått det att fungera:

<% Dim Medlemmar 
Medlemmar = Request.Form("adresser")
%>
<% Dim Subject
Subject = Request.Form("amne")
%>
<% Dim Meddelande 
Meddelande = Request.Form("meddelande")
%>

<html>
<head>
<title></title>
</head>
<body>
</body>

            <%
            Name   = "Bire"
            SenderEmail  = "bire@upp.se"
            Subject   = Subject
            Recipient  = "bire@upp.se"
            Bcc = Medlemmar
            Body = Meddelande
            Set JMail = Server.CreateObject("JMail.SMTPMail") 

            JMail.ServerAddress = "mail.envikenrecords.com"
            JMail.Sender = Senderemail
            JMail.Subject = Subject
            JMail.AddRecipient Recipient
            JMail.AddRecipientBCC Bcc

            JMail.Body = Body
            JMail.Priority = 3
            JMail.AddHeader "Originating-IP", Request.ServerVariables("REMOTE_ADDR")
            JMail.Execute
            %>
</html>

Men det funkar inte med att hämta alla mottagare från db och ploppa in dom som jag gjort utan då skulle väl denna kod klämmas in nånstans på ett snyggt sätt ;)

' Send Newsletter'
----------------
Private Sub myJmail(mySMTPserver, myMail, mySubject, myBody)
	Dim rs ' as adodb.recordset
	Dim strSQL ' as string
	Dim toMail ' as string
	' sql query to grab all emails from database			

'-------------------------------------------
	strSQL = "SELECT * FROM Subscribers WHERE Email = True"
	OpenDB()
	Set oMail = Server.CreateObject("Jmail.SMTPMail")
	oMail.ServerAddress = mySMTPServer	oMail.Sender = myMail
	oMail.Subject = mySubject	oMail.AddRecipient myMail

	Set rs = Server.CreateObject("ADODB.Recordset")
		rs.ActiveConnection = myConn
		rs.Source = strSQL	
		rs.CursorLocation = adUseClient
		rs.CursorType = adLockOptimistic
		rs.Open

			If Not rs.EOF or rs.BOF Then	
			Do Until rs.EOF or rs.BOf
			toMail = " " & rs("mail_field")
			oMail.AddRecipientBCC  toMail
	rs.MoveNext
	Loop
	End If

Set rs = nothing
oMail.Body = myBody
oMail.AddHeader "Originating-IP: ", Request.ServerVariables("REMOTE_ADDR")	

oMail.Execute
Set oMail = nothing
CloseDB()
End Sub

Och så här ser databaskopplingen ut:

<% Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("../../cgi-bin/newsletter2.mdb")
Visa = "SELECT * FROM Subscribers ORDER BY Email"
set RecSet=Connect.Execute(Visa)
antal = "SELECT COUNT(*) as antal from Subscribers"
set RecSet2=Connect.Execute(antal)
%>

Om någon har lust att knåpa till detta så vore jag ytterst tacksam..

------------------
<A HREF="http://www.lifestyleshop.nu/bire" TARGET=_blank>CTS / AA / CD / OH / RD / SD / TR / MR</A>

Medlem sedan juni 200032 967 inlägg
#2
toMail = " " & rs("mail_field")

varför slänger du in ett mellanslag före emailadressen, innan du kör addrecipientbcc?

------------------
don't follow your friends -- inflate them

Medlem sedan dec. 199919 074 inlägg
#3

Ingen aning ;) Den koden är tagen från denna tråd: http://cgi.webforum.nu/wf/Forum11/HTML/000777.html

Jag vet som sagt inte hur man gör detta...

------------------
<A HREF="http://www.lifestyleshop.nu/bire" TARGET=_blank>CTS / AA / CD / OH / RD / SD / TR / MR</A>

Medlem sedan juni 200032 967 inlägg
#4
oMail.Sender = myMail

har du något värde i myMail? om sender är tom skickas inget, men inget felmeddelande dyker upp.

får du något felmeddelande?

------------------
don't follow your friends -- inflate them

Medlem sedan dec. 199919 074 inlägg
#5

Hehe ;)

Denna kod:

' Send Newsletter'
----------------
Private Sub myJmail(mySMTPserver, myMail, mySubject, myBody)
Dim rs ' as adodb.recordset
Dim strSQL ' as string
Dim toMail ' as string
' sql query to grab all emails from database 
'-------------------------------------------
strSQL = "SELECT * FROM Subscribers WHERE Email = True"
OpenDB()
Set oMail = Server.CreateObject("Jmail.SMTPMail")
oMail.ServerAddress = mySMTPServer oMail.Sender = myMail
oMail.Subject = mySubject oMail.AddRecipient myMail

Set rs = Server.CreateObject("ADODB.Recordset")
rs.ActiveConnection = myConn
rs.Source = strSQL 
rs.CursorLocation = adUseClient
rs.CursorType = adLockOptimistic
rs.Open

If Not rs.EOF or rs.BOF Then 
Do Until rs.EOF or rs.BOf
toMail = " " & rs("mail_field")
oMail.AddRecipientBCC toMail
rs.MoveNext
Loop
End If

Set rs = nothing
oMail.Body = myBody
oMail.AddHeader "Originating-IP: ", Request.ServerVariables("REMOTE_ADDR") 

oMail.Execute
Set oMail = nothing
CloseDB()
End Sub

Har jag ännu inte testat att göra nått med alls, det är den som jag behöver hjälp med att implementera i:

<% Dim Medlemmar 
Medlemmar = Request.Form("adresser")
%>
<% Dim Subject
Subject = Request.Form("amne")
%>
<% Dim Meddelande 
Meddelande = Request.Form("meddelande")
%>

<html>
<head>
<title></title>
</head>
<body>
</body>

<%
Name = "Bire"
SenderEmail = "bire@upp.se"
Subject = Subject
Recipient = "bire@upp.se"
Bcc = Medlemmar
Body = Meddelande
Set JMail = Server.CreateObject("JMail.SMTPMail") 

JMail.ServerAddress = "mail.envikenrecords.com"
JMail.Sender = Senderemail
JMail.Subject = Subject
JMail.AddRecipient Recipient
JMail.AddRecipientBCC Bcc

JMail.Body = Body
JMail.Priority = 3
JMail.AddHeader "Originating-IP", Request.ServerVariables("REMOTE_ADDR")
JMail.Execute
%>
</html>

Jag behöver alltså hjälp med att kombinera de tre olika kodsnuttarna så att det kommer att fungera ;)

Jag är en sopa på asp :e

------------------
<A HREF="http://www.lifestyleshop.nu/bire" TARGET=_blank>CTS / AA / CD / OH / RD / SD / TR / MR</A>

Medlem sedan mars 20002 836 inlägg
#6

Hello Bire,

här kommer koden som jag använder mig av och den funkar....

'Variable Declaration
'--------------------
Dim myConn ' as adodb.connection

' Create db-connection
'---------------------
Private Function OpenDB()

	Set myConn = Server.CreateObject("ADODB.Connection")
	myConn.Provider = "Microsoft.Jet.OLEDB.4.0"
	myConn.ConnectionString = "Data Source=" & Server.MapPath("/my_filepath_to/my_dbase.mdb")
	myConn.Open

End Function

' Destroy db-connection
'----------------------
Private Function CloseDB()

	Set myConn = nothing

End Function
' Send Newsletter
'----------------
Private Sub myJmail(mySMTPserver, myMail, mySubject, myBody)

	Dim rs ' as adodb.recordset
	Dim strSQL ' as string
	Dim oMail ' as Jmail.SMTPmail
	Dim toMail ' as string

	' sql query to grab all emails from database
	'-------------------------------------------
	strSQL = "SELECT * FROM tblNewsMembers WHERE fldMemberActive = True"

	OpenDB()

	Set oMail = Server.CreateObject("Jmail.SMTPMail")
	oMail.LazySend = True
	oMail.ServerAddress = mySMTPServer
	oMail.Sender = myMail
	oMail.Subject = mySubject
	oMail.AddRecipient myMail

	Set rs = myConn.Execute(strSQL)

				If Not rs.EOF or rs.BOF Then

					Do Until rs.EOF or rs.BOf

						'toMail = rs("fldMemberMail")
						oMail.AddRecipientBCC  rs("fldMemberMail")

						rs.MoveNext

					Loop

				End If

		Set rs = nothing

	oMail.Body = myBody
		oMail.AddHeader "Originating-IP: ", Request.ServerVariables("REMOTE_ADDR")
	oMail.Execute

	Set oMail = nothing

	CloseDB()

End Sub

OpenDB() funktionen skapar och öppnar ett connection object (vet, ska göra om det)
CloseDB() förstör connection objectet

För att "anropa" mailsubben:

myJmail("my.mail.server",Request.Form("txtCFromMail"),Request.Form("txtNewsSubject"), Request.Form("txtNewsBody")

Hoppas att du får ut ngt av detta, annars e det bara att "höra av sig igen" =P

cya,
PatrikB

------------------
=================================
** ZWGdesign **
=================================

[Redigerat av PatrikB den 07 aug 2000]

Medlem sedan dec. 199919 074 inlägg
#7

Jag fattar inte hur detta går till!

*Tar livet av mig*

------------------
<A HREF="http://www.lifestyleshop.nu/bire" TARGET=_blank>CTS / AA / CD / OH / RD / SD / TR / MR</A>

Medlem sedan mars 20002 836 inlägg
#8

OK,
hur ser din databas ut??
Typ:
Tabell
- fältnamn1
- fältnamn2
etc

så kanske jag kan hjälpa till lite mer =p

cya,
PatrikB

------------------
=================================
** ZWGdesign **
=================================

Medlem sedan dec. 199919 074 inlägg
#9

Det är en Accessbas som ser ut så här:

Tabellen heter: "Subscribers"
Fältet som innehåller mailadresserna heter: "Email"
Sen finns det ett räknarfält som heter: "SubscriberID"
Samt ett som innehåller datum/tid som heter: "DateCreated"

Thats it! ;)

Så här ser kopplingen ut:

<% Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("../../cgi-bin/newsletter2.mdb")
Visa = "SELECT * FROM Subscribers ORDER BY Email"
set RecSet=Connect.Execute(Visa)
antal = "SELECT COUNT(*) as antal from Subscribers"
set RecSet2=Connect.Execute(antal)
%>

Hjääälp... :)

------------------
<A HREF="http://www.lifestyleshop.nu/bire" TARGET=_blank>CTS / AA / CD / OH / RD / SD / TR / MR</A>

Medlem sedan mars 20002 836 inlägg
#10

Hello Bire,

du har inte din cgi-bin i wwwroot?

//PatrikB

------------------
=================================
** ZWGdesign **
=================================

Medlem sedan dec. 199919 074 inlägg
#11

Jo, på servern ligger den direkt under wwwroot.

------------------
<A HREF="http://www.lifestyleshop.nu/bire" TARGET=_blank>CTS / AA / CD / OH / RD / SD / TR / MR</A>

Medlem sedan mars 20002 836 inlägg
#12

Hello igen,

skickar lite kod denna väg....

elist.htm:

<html>
<head>
<title>Skicka e-list mail</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF">
<form method="post" action="sendmail.asp">
  <table width="100%" border="0" cellspacing="2" cellpadding="2">
    <tr> 
      <td align="right"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Ämne:</font></b></td>
      <td> 
        <input type="text" name="amne" size="30" maxlength="50">
      </td>
    </tr>
    <tr> 
      <td valign="top" align="right"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Meddelande:</font></b></td>
      <td> 
        <textarea name="meddelande" cols="65" rows="9"></textarea>
      </td>
    </tr>
    <tr> 
      <td valign="top" align="right"> </td>
      <td> 
        <input type="submit" name="Submit" value="Skicka">
      </td>
    </tr>
  </table>
</form>
</body>
</html>

ASP filen som skicka mailen:

sendmail.asp:

<% @language="vbscript" %>
<% Option Explicit %>
<%
	Response.Buffer = True
	' Variable Declaration
	'---------------------
	Dim oConn ' as ADODB.Connection
	Dim sMyBody ' as String
	Dim sMySubject ' as String

	sMyBody = Request.Form("meddelande")
	sMySubject = Request.Form("amne")

' Create db-conn object
'----------------------
Private Function CreateDBConn()

	Set oConn = Server.CreateObject("ADODB.Connection")
		oConn.Provider = "Microsoft.Jet.OLEDB.4.0"
		oConn.ConnectionString = "Data Source=" & Server.MapPath("/dbase/newsletter2.mdb")

End Function

' Destroy db-conn object
'-----------------------
Private Function DestroyDBConn()

	Set oConn = nothing

End Function

' Send Newsletter
'----------------
Private Sub myJmail(mySMTPserver, myMail, mySubject, myBody)

	Dim rs ' as adodb.recordset
	Dim strSQL ' as string
	Dim oMail ' as Jmail.SMTPmail
	Dim toMail ' as string

	' sql query to grab all emails from database
	'-------------------------------------------
	strSQL = "SELECT SubscriberID, Email FROM Subscribers"

	CreateDBConn()
	oConn.Open

	' Create mail-object
	'-------------------
	Set oMail = Server.CreateObject("Jmail.SMTPMail")
	oMail.LazySend = True
	oMail.ServerAddress = mySMTPServer
	oMail.Sender = myMail
	oMail.Subject = mySubject
	oMail.AddRecipient myMail

	Set rs = oConn.Execute(strSQL)

		If Not rs.EOF or rs.BOF Then

	Do Until rs.EOF or rs.BOf

	oMail.AddRecipientBCC  rs("Email")

		rs.MoveNext

			Loop

		End If

		Set rs = nothing

	oMail.Body = myBody
		oMail.AddHeader "Originating-IP: ", Request.ServerVariables("REMOTE_ADDR")
	oMail.Execute

	Set oMail = nothing

	oConn.Close
	DestroyDBConn()

End Sub

	Call myJmail("din.mail.server","din.mail@adress",sMySubject,sMyBody)
%>
<html>
<head>
<title>zElist</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF">
<div align="center"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Mailen 
  har nu skickats. </font></b></div>
</body>
</html>

som du ser ... ingen avancerad layout ;o

men hoppas att den funkar med din db ...

cya,
PatrikB
<redigerat>
Ändra på raden som börjar med:
Call myJmail(".....
så att server adressen och din mail stämmer ....
</redigerat>

------------------
=================================
** ZWGdesign **
=================================

[Redigerat av PatrikB den 08 aug 2000]

[Redigerat av PatrikB den 08 aug 2000]

Medlem sedan dec. 199919 074 inlägg
#13

Nope! Det funkar inte alls :(

<% @language="vbscript" %>
<% Option Explicit %>
<%Response.Buffer = True
' Variable Declaration
'---------------------
Dim oConn ' as ADODB.Connection
Dim sMyBody ' as String
Dim sMySubject ' as String
sMyBody = Request.Form("meddelande")
sMySubject = Request.Form("amne")
' Create db-conn object
'----------------------
Private Function CreateDBConn()
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Provider = "Microsoft.Jet.OLEDB.4.0"
oConn.ConnectionString = "Data Source=" & 

Server.MapPath("../../cgi-bin/newsletter2.mdb"
EndFunction
' Destroy db-conn object
'-----------------------
Private Function DestroyDBConn()
Set oConn = nothingEnd Function
' Send Newsletter
'----------------
Private Sub myJmail(mySMTPserver, myMail, mySubject, myBody)
Dim rs ' as adodb.recordset
Dim strSQL ' as string
Dim oMail ' as Jmail.SMTPmail
Dim toMail ' as string
' sql query to grab all emails from database	

'-------------------------------------------
strSQL = "SELECT SubscriberID, Email FROM Subscribers"	CreateDBConn()
oConn.Open
' Create mail-object
'-------------------
Set oMail = Server.CreateObject("Jmail.SMTPMail")
oMail.LazySend = True
oMail.ServerAddress = mySMTPServer	oMail.Sender = myMail
oMail.Subject = mySubject
oMail.AddRecipient myMail
Set rs = oConn.Execute(strSQL)
If Not rs.EOF or rs.BOF Then	Do Until rs.EOF or rs.BOf
oMail.AddRecipientBCC  rs("Email")
rs.MoveNext
Loop
End If
Set rs = nothing
oMail.Body = myBody
oMail.AddHeader "Originating-IP: ", Request.ServerVariables("REMOTE_ADDR")	

oMail.Execute
Set oMail = nothing
oConn.Close
DestroyDBConn()End Sub
Call 

myJmail("mail.envikenrecords.com","webmaster@envikenrecords.com",sMySubject,sMyBody

)%>
<html>
<head>
<title>zElist</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF">
<div align="center">
<b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Mailen  har nu skickats. 

</font></b>
</div>
</body>
</html>

Detta generarade ett:
HTTP 500 - Internt serverfel
Internet Explorer
i sendmail.asp

Jag misstänker att det är nått skumt med dbkopplingen!?!?!

Så här funkade det att få kontakt med db förut:

<% Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("../../cgi-bin/newsletter2.mdb")
Visa = "SELECT * FROM Subscribers ORDER BY Email"
set RecSet=Connect.Execute(Visa)
antal = "SELECT COUNT(*) as antal from Subscribers"
set RecSet2=Connect.Execute(antal)
%>

Eller är det nått sånt där dsntjafs man måste greja nu? ;)

Använd "kod" taggar om du publicerar fler kodexempel då det är lättare att kopiera och klistara in dem.. ;)

------------------
<A HREF="http://www.lifestyleshop.nu/bire" TARGET=_blank>CTS / AA / CD / OH / RD / SD / TR / MR</A>

[Redigerat av Bire den 08 aug 2000]

Medlem sedan dec. 19998 577 inlägg
#14

Hur ser koden ut nu, efter vårat samtal? :)

------------------
PC-älskare prasslar i säven, och har malt i ryggen
www.webeye.nu
Vilken kategori spel tycker du mest om?

Medlem sedan dec. 199919 074 inlägg
#15

Efter mycket om & men så kom vi iaf så här långt att ETT mail skickas och det går till den adress som ligger i strängen:

Call myJmail("mail.envikenrecords.com","hej@upp.se",sMySubject,sMyBody)%>

Det skrivs ut 5st @ och inga felmeddelanden :(

Vad kan vara snett nu då ;)

<% @language="vbscript" %>
<% Option Explicit%>
<%Response.Buffer = True
' Variable Declaration
'---------------------
Dim oConn ' as ADODB.Connection
Dim sMyBody ' as String
Dim sMySubject ' as String
sMyBody = Request.Form("meddelande")
sMySubject = Request.Form("amne")
' Create db-conn object
'----------------------
Private Function CreateDBConn()
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("../../cgi-bin/newsletter2.mdb")
End Function
' Destroy db-conn object
'-----------------------
Private Function DestroyDBConn()
Set oConn = nothing
End Function
' Send Newsletter
'----------------
Private Sub myJmail(mySMTPserver, myMail, mySubject, myBody)
Dim rs ' as adodb.recordset
Dim strSQL ' as string
Dim oMail ' as Jmail.SMTPmail
Dim toMail ' as string
' sql query to grab all emails from database 

'-------------------------------------------
strSQL = "SELECT SubscriberID, Email FROM Subscribers"
CreateDBConn()
' Create mail-object
'-------------------
Set oMail = Server.CreateObject("Jmail.SMTPMail")
oMail.LazySend = True
oMail.ServerAddress = mySMTPServer
oMail.Sender = myMail
oMail.Subject = mySubject
oMail.AddRecipient myMail
Set rs = oConn.Execute(strSQL)
If Not rs.EOF or rs.BOF Then 
Do Until rs.EOF or rs.BOf
Response.write "@"
oMail.AddRecipientBCC rs("Email")
rs.MoveNext
Loop
End If
Set rs = nothing
oMail.Body = myBody
oMail.AddHeader "Originating-IP: ", Request.ServerVariables("REMOTE_ADDR") 

oMail.Execute
Set oMail = nothing
oConn.Close
DestroyDBConn()
End Sub
Call myJmail("mail.envikenrecords.com","hej@upp.se",sMySubject,sMyBody)%>
<html>
<head>
<title>zElist</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF">
<div align="center">
<b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Mailen har nu skickats.</font></b>
</div>
</body>
</html>

------------------
<A HREF="http://www.lifestyleshop.nu/bire" TARGET=_blank>CTS / AA / CD / OH / RD / SD / TR / MR</A>

[Redigerat av Bire den 08 aug 2000]

Medlem sedan mars 20002 836 inlägg
#16

Hello,

har du provat med att skriva ut rs("Email") istället för @, så ser du om det inte är tomma fält den hämtar ifrån db.....

//PatrikB

------------------
=================================
** ZWGdesign **
=================================

Medlem sedan dec. 19996 721 inlägg
#17

En annan variant...

<%
Sub MailAll(strSubject,strBody,strSender,strSMPTServer)
	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("../../cgi-bin/newsletter2.mdb")
	Visa = "SELECT Email FROM Subscribers"
	set RecSet=Connect.Execute(Visa)
	Set oMail = Server.CreateObject("Jmail.SMTPMail")
	oMail.LazySend = True
	oMail.ServerAddress = strSMTPServer
	oMail.Sender = strSender
	oMail.Subject = strSubject
	if not RecSet.eof then
		do until RecSet.eof
			oMail.AddRecipientBCC RecSet(0)
			RecSet.Movenext
		loop
		oMail.Body = strBody
		oMail.Execute
	end if
	Set oMail=Nothing
	Connect.Close
	Set Connect=Nothing
End Sub
%>
Medlem sedan dec. 199919 074 inlägg
#18

PatrikB: Testade precis att skriva ut rs och mailadresserna skrivs ut så här:

webmaster@upp.seseg@upp.sebire@upp.sestygg@upp.sebire@telia.com

Ett mail går iväg och det hamnar hos: hej@upp.se

Call myJmail("mail.envikenrecords.com","hej@upp.se",sMySubject,sMyBody)%>

Emission: Nu är jag ännu mer förvirrad ;)

------------------
<A HREF="http://www.lifestyleshop.nu/bire" TARGET=_blank>CTS / AA / CD / OH / RD / SD / TR / MR</A>

[Redigerat av Bire den 08 aug 2000]

304 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
156 ms — deklarationer (db)
0 ms — hämta statistik (cache)
145 ms — hämta tråd, inlägg och bilagor (db)
157 ms — ändringar (db)