Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

razstec

[Resolvido] aspmail nao funca

Recommended Posts

poça isto esta-me mesmo a irritar...

tenho o projecto parado por causa disto... o envio por texto funciona bem.

 

Já to farto de correr manuais e sites de apoio e nao percebo o que possa estar mal.

 

Vou postar a pagina toda, pode ser que ajude...

 

Quando um utilizadar insere dados novos na bd ao carregar em gravar ele grava na bd e abre esta pagina:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head><title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<%
dim id
id = request.queryString("id")
Dim tbl
tbl= request.queryString("tbl")

set conn = CreateObject("ADODB.Connection")
conn.Provider = "Microsoft.Jet.Oledb.4.0"
conn.Open Server.MapPath("zaq8953964imjok/ewfatf6767fsdfw67f5eqw76.mdb")
set rs=server.createobject("adodb.recordset")
lerdoenca= "select * from newsletter"
rs.open lerdoenca,conn,1
%>

</head>
<body>

<%
if rs.recordcount > 0 then 
for j=1 to rs.recordcount
%>

<%rs.Fields("mailnewsletter")%>

<%@ Language=VBScript%>
<%

sTo =  Trim(rs.Fields("mailnewsletter")")
sFrom = "geral@aquasplender.com"
sSubject = "Novidades Aquaticas de Aquasplender.com"
sMailServer = "127.0.0.1"
shtmlbody = ("http://www.aquasplender.com/news_email.asp?tbl='"&tbl&"'&newsemail="&rs.("mailnewsletter")"&id="&rs("id")&"")

if Request("actnow")="gonow" then
 gonow()
end if

Sub gonow()

 Set objMail = Server.CreateObject("CDO.Message")
 Set objConf = Server.CreateObject("CDO.Configuration")
 Set objFields = objConf.Fields

 With objFields
   .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
   .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver")  = sMailServer
   .Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 10
   .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
   .Update
 End With

 With objMail
   Set .Configuration = objConf
   .From = sFrom
   .To = sTo
   .Subject = sSubject
   .CreateMHTMLBody = shtmlbody 
  End With

 Err.Clear 
 on error resume next

 objMail.Send

 Set objFields = Nothing
 Set objConf = Nothing
 Set objMail = Nothing
End sub
%>

<% rs.movenext
next 
else
end if
%>



</body>

</html>

 

Esta pagina ao abrir vai enviar um mail para cada endereço de email inserido na tabela newsletter com a variavel id, a variavel tbl e a variavel mailnewsletter de modo a que o receptor do email ao abrir este ele disponibilize os dados relativos a informação adicionada por aquele utilizador expecifico.

Compartilhar este post


Link para o post
Compartilhar em outros sites

esta linha:

sMailServer = "127.0.0.1"

 

Está correta ?

e aqui:

shtmlbody = ("http://www.aquasplender.com/news_email.asp?tbl='"&tbl&"'&newsemail="&rs.("mailnewsletter")"&id="&rs("id")&"")

 

Deu um response.write para ver se está saindo como esperado ?

e aqui:

tbl='"&tbl&"'

 

Acho que precisa tirar as aspas simples, pois o resultado seria: tbl='123' e querystring não tem aspas simples pra funcionar

Compartilhar este post


Link para o post
Compartilhar em outros sites

esta linha:

sMailServer = "127.0.0.1"

 

Está correta ?

 

penso que sim pelo menos foi o que os tipos do serviçode hosting me mandaram usar, para alem disso ele funciona com o email de texto.

 

e aqui:

shtmlbody = ("http://www.aquasplender.com/news_email.asp?tbl='"&tbl&"'&newsemail="&rs.("mailnewsletter")"&id="&rs("id")&"")

 

Deu um response.write para ver se está saindo como esperado ?

 

nao vale de nada pois ele da-me uma pagina em branco a dizer

Internal Server Error

e aqui:

tbl='"&tbl&"'

 

Acho que precisa tirar as aspas simples, pois o resultado seria: tbl='123' e querystring não tem aspas simples pra funcionar

bem visto. ja retirei mas nao alterou o resultado

 

passei o <%@ Language=VBScript%> para a linha 1 e já esta a devolver erros

 

agora diz que falta um ) na seguinte linha:

shtmlbody = ("http://www.aquasplender.com/news_email.asp?tbl='"&tbl&"'&newsemail="&rs.("mailnewsletter")"&id="&rs("id")&"")

 

Microsoft VBScript compilation error '800a03ee'

 

Expected ')'

 

/html/sendmailnews.asp, line 37

 

shtmlbody = ("http://www.aquasplender.com/news_email.asp?tbl="&tbl&"&newsemail="&rs.Fields("mailnewsletter")"&id="&rs("id")&"")

------------------------------------------------------------------------------------------------------------^

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que mostra quando você der um response.write em shtmlbody

a concatenação esta incorreta...

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao mostra nada, nao consigo que ele disponibilize o texto

 

faltava um &:

 

shtmlbody = ("http://www.aquasplender.com/news_email.asp?tbl="&tbl&"&newsemail="&rs.Fields("mailnewsletter")&"&id="&rs("id")&"")

 

agora da erro na SUB :S

 

retirei a sub, nao estava la a fazer nada :S

 

Microsoft VBScript runtime error '800a01c2'

Wrong number of arguments or invalid property assignment: 'Fields'

/html/sendmailnews.asp, line 29

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso pode acontecer ao tentar chamar um método como uma propriedade, ou vice-versa, ou chamando um método de um objeto interno, e passando muitos argumentos.

 

No entanto, a causa mais comum para isso é usando ADODB.Recordset para criar um novo registro, e depois ter algo parecido com isto:

 

<% 
   ' ... 
   RS.Fields.Item("NomedaColuna") = "algumaString" 
   ' ... 
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

decidi por a funcionar e depois ir acrescentando aos poucos de modo a saber onde esta o erro.

 

 

Este codigo esta a funcionar a 100%

sTo =  Trim(rs.Fields("mailnewsletter"))
sFrom = "noreply@aquasplender.com"
sSubject = request.queryString("titulo")
sMailServer = "127.0.0.1"



'shtmlbody = ("http://www.aquasplender.com/news_email.asp?tbl="&tbl&"&newsemail="&rs.Fields("mailnewsletter")&"&id="&rs("id")&"")




 Set objMail = Server.CreateObject("CDO.Message")
 Set objConf = Server.CreateObject("CDO.Configuration")
 Set objFields = objConf.Fields

 With objFields
   .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
   .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver")  = sMailServer
   .Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 10
   .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
   .Update
 End With

 With objMail
   Set .Configuration = objConf
   .From = sFrom
   .To = sTo
   .Subject = sSubject
   .CreateMHTMLBody  "http://www.aquasplender.com/"
  End With

 Err.Clear 
 on error resume next

 objMail.Send

 Set objFields = Nothing
 Set objConf = Nothing
 Set objMail = Nothing

 

Mas quando altero o .CreateMHTMLBody ele deixa de dar.

Já tentei destas maneiras mas da sempre o erro.

.CreateMHTMLBody  "http://www.aquasplender.com/news_email.asp"

.CreateMHTMLBody  "http://www.aquasplender.com/news_email.asp?tbl="&tbl&"&newsemail="&rs.Fields("mailnewsletter")&"&id="&rs("id")&"/"

 

Já funciona, finalmente.... :)

 

   .CreateMHTMLBody  "http://www.aquasplender.com/news_email.asp?tbl="&tbl&"&newsemail="&rs.Fields("mailnewsletter")&"&id="&rs("id")&""

Compartilhar este post


Link para o post
Compartilhar em outros sites

agora falta enviar as variaveis para a pagina que envia o mail...

 

ao fazer guardar a pagina guarda os dados na bd e abre esta iframe

 

<iframe name="Imailzz" src="sendmailnews.asp?tbl="&tbl&"&id=<%= rs("id")%>&titulo=<%=request.form("titulo")%>">
Your browser does not support inline frames or is currently configured not to display inline frames.
</iframe>

 

a var tbl já vem de tras, o titulo ele vai buscar ao form e o id é o id onde ele vai guardar essas novas informações

a parte que eu suspeito que esteja a falhar é o id

 

Como posso fazer para ele me dar o id visto que ele é gerado quando grava os dados? talvez tenha de passar por uma pagina primeiro nao?

Compartilhar este post


Link para o post
Compartilhar em outros sites

poça o select nao esta a funcionar.

estame a devolver o id 74 quando devia devolver o id 176

 

tenho alguma coisa mal?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head><title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
</head>
<%
Dim tbl
tbl= request.queryString("tbl")

set conn = CreateObject("ADODB.Connection")
conn.Provider = "Microsoft.Jet.Oledb.4.0"
conn.Open Server.MapPath("zaq8mjok/ewfatw67f5eqw76.mdb")
set rs=server.createobject("adodb.recordset")
lerdoenca= "SELECT TOP 1 * FROM taball order by data asc, hora asc"
rs.open lerdoenca,conn,1
%>

<body>
<a href="sendmailnews.asp?id=<%=rs("id")%>&tbl=<%=tbl%>">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</a>

</body>

</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá um response.write na sua string SQL, para ver o que esta sendo passado.

 

lerdoenca= "SELECT TOP 1 * FROM taball order by data asc, hora asc"
response.write(lerdoenca)
response.end()

Compartilhar este post


Link para o post
Compartilhar em outros sites

A sintaxe está correta, pesquisando na net (faz muito tempo que não mexo com access), achei alguem com problemas semelhantes, e a sintaxe era praticamente a mesma:

SELECT TOP 1 * FROM Participantes ORDER BY Cod_Participante DESC 

 

A diferença está só no order by, que tem apenas um campo, não me lembro se isso influencia no access ou não, me lembro de ter feito algo assim, e não pus o order by, pois só queria pegar o id, se não estiver muito enganado, a sintaxe era algo do tipo:

select Top 1 id from tabela

 

No mesmo site do primeiro exemplo, achei também outra possibilidade:

SELECT MAX(CAMPO_AUTOINCREMENTO) FROM TABELA

 

e também:

SELECT * FROM TABELA A WHERE A.CAMPO_AUTOINCREMENTO = (SELECT MAX(CAMPO_AUTOINCREMENTO) FROM TABELA B)

 

Não sei se ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que é estranho é que a minha sintaxe esta correcta, eu estou a usala noutra pagina que funciona a 100%.

 

Vou ver estes exemplos.

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

ja funciona, fiz de outra maneira, chamei o titulo do artigo inserido e ele chamou pelo titulo.

 

ja funciona

 

obrigado pela ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

fogo, cada vez percebo menos.

 

ontem esta a funcionar agora já nao funciona.

 

nao mexi em nada, simplesmente deixou de dar :s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.