Ir para conteúdo
Fórum Script Brasil
  • 0

Loja virtual com sendmail


marvi

Pergunta

Olá pessoal,

Estou fazendo uma loja virtual que quando a pessao fecha o pedido as informações são guardada no banco de dados e ao mesmo tempo envia o pedido, as informações para o e-mail da loja que oferece os produtos... Eu fiz um insert normal e tal... no meu caso estou usando o session para armazenar no banco de dados e ao mesmo tempo pegando esse session para usar meu sendmail... mas dar esse erro:

error '8004020e'

/insert.asp, line 160

<%
nome = session("varNome")
email = session("varEmail")
subject = "Loja virtual"

corpo = session("varNome") & vbnewline
corpo = session("varCNPJ_CPF")& vbnewline
corpo = session("varRua")& vbnewline
corpo = session("varCidade")& vbnewline
corpo = session("varUF")& vbnewline
corpo = session("varCEP")& vbnewline
corpo = session("varTel")& vbnewline


Call SendMail(nome & " <" & email & ">", "teste@otimainformatica.com.br", subject, corpo)


Response.Redirect("http://www.otimainformatica.com.br/obrigado.asp")%>

<html>


<%  

'não precisa mexer daqui pra baixo
Sub SendMail(strFrom, strTo, strSubject, strMessage)
  Dim cdoConfig
  Dim objMail
  

sch = "http://schemas.microsoft.com/cdo/configuration/" 
Set cdoConfig = Server.CreateObject("CDO.Configuration") 
cdoConfig.Fields.Item(sch & "sendusing") = 2 
cdoConfig.Fields.Item(sch & "smtpserver") = "localhost" 
cdoConfig.fields.update 

  Set objMail = Server.CreateObject("CDO.Message")

  With objMail
   Set .Configuration = cdoConfig
   .From = strFrom
   .To = strTo
   
   .Subject = strSubject 

   .TextBody = strMessage

  ' note que abaixo desligamos o modo html, e deixamos o email em formato txt sem codigos html
 '.HTMLBody = strMessage

   .Send
  End With
End Sub
%>

</html>

A linha 160 é esse .Send que está ai no fim... E se eu uso só o sendmail normal ele funciona... está tudo instalado no servidor os componentes... mas quando pego esse sendmail.asp e acoplo abaixo do insert do banco para enviar um e-mail também além de guardar no banco o pedido, dar esse erro...

Alguém sabe o por que? Ou sabe como fazer um pedido de uma loja virtual ir para o banco e depois chegar no e-mail da própria loja avisando com os dados da venda?

Obrigado!

Editado por marvi
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Não to muito familiarizado sobre azs condições que seu script foi montado... achei bem estranho essa primeira parte:

nome = session("varNome")
email = session("varEmail")
subject = "Loja virtual"

corpo = session("varNome") & vbnewline
corpo = session("varCNPJ_CPF")& vbnewline
corpo = session("varRua")& vbnewline
corpo = session("varCidade")& vbnewline
corpo = session("varUF")& vbnewline
corpo = session("varCEP")& vbnewline
corpo = session("varTel")& vbnewline


Call SendMail(nome & " <" & email & ">", "teste@otimainformatica.com.br", subject, corpo)
todo caso... na esmagadora maioria das vezes, esses tipos de erro ocorrem devido a um problema na formatação do corpo da mensagem... como teste, e apenas para teste, sugiro alterar o corpo da mensagem para:
corpo = "teste"

e ver se funciona... se funcionar o erro está identificado, basta trabalhar em cima disso... do contrário teremos que nos aprofundar nesses quesitos que mencionei acima... pois estão realmente esquisitões!

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0

Dei uma pesquisada sobre o erro e vi que ele ocorre quando o e-mail está mal formatado (acentuação errada, etc.)

Olha essa parte do seu código

Call SendMail(nome & " <" & email & ">", "teste@otimainformatica.com.br", subject, corpo)

Verifique se o componente funciona com caracteres de espaço e sinais (como "<" e ">")

Existe um espaço entre a variável nome e o resto do remetende.

Observe: nome & " <" & email & ">"

Qualquer coisa, é só postar !

Editado por Jonathan Queiroz
Link para o comentário
Compartilhar em outros sites

  • 0

Fiz e deu o mesmo erro

error '8004020e'

/insert.asp, line 154

Na verdade o sendmail sempre rodou o que quero é acoplar para inserir no banco e assim aproveitar e mandar um e-mail, veja o codigo todo...

sqlUpdate = "UPDATE Pedidos SET "
sqlUpdate = sqlUpdate & "Cliente = '" & session("varNome") & "', "
sqlUpdate = sqlUpdate & "CNPJ_CPF = '" & session("varCNPJ_CPF") & "', "
sqlUpdate = sqlUpdate & "Rua = '" & session("varRua") & "', "
sqlUpdate = sqlUpdate & "Cidade = '" & session("varCidade") & "', "
sqlUpdate = sqlUpdate & "UF = '" & session("varUF") & "', "
sqlUpdate = sqlUpdate & "CEP = '" & session("varCEP") & "', "
sqlUpdate = sqlUpdate & "Tel = '" & session("varTel") & "', "
sqlUpdate = sqlUpdate & "Email = '" & session("varEmail") & "', "
sqlUpdate = sqlUpdate & "Total = " & varSubTotal & ", "
sqlUpdate = sqlUpdate & "usuario = '" & session("varusuario") & "', "
sqlUpdate = sqlUpdate & "senha = '" & session("varsenha") & "', "
sqlUpdate = sqlUpdate & "status = '" & varstatus & "', "
sqlUpdate = sqlUpdate & "OBS = '" & session("obs") & "', "
sqlUpdate = sqlUpdate & "hora = '" & FormatDateTime(Now, 3) & "', "
sqlUpdate = sqlUpdate & "bairro = '" & session("varbairro") & "', "
sqlUpdate = sqlUpdate & "mes = '" & mes & "', "
sqlUpdate = sqlUpdate & "complemento = '" & session("varcomplemento") & "', "
sqlUpdate = sqlUpdate & "acao = 'ativo', "
sqlUpdate = sqlUpdate & "Fechado = True "
sqlUpdate = sqlUpdate & "WHERE COD_Pedido = " & Session("CodPed")


Set rsUpdate = Conexao.Execute(sqlUpdate)
end if

sqlUpdate1 = "INSERT INTO clientes (Cliente, CNPJ_CPF, Rua, Cidade, UF, CEP, Tel, Email, usuario, senha, bairro) VALUES ('" & session("varNome") & "', '" & session("varCNPJ_CPF") & "', '" & session("varRua") & "', '" & session("varCidade") & "', '" & session("varUF") & "', '" & session("varCEP") & "', '" & session("varTel") & "', '" & session("varEmail") & "', '" & session("varusuario") & "', '" & session("varsenha") & "', '" & session("varbairro") & "')"

Set rsUpdate1 = Conexao.Execute(sqlUpdate1)
%>
<%
nome = session("varNome")
email = session("varEmail")
subject = "Loja virtual"



corpo = "teste"


Call SendMail(nome & " <" & email & ">", "teste@otimainformatica.com.br", subject, corpo)


Response.Redirect("http://www.otimainformatica.com.br/obrigado.asp")%>

<html>


<%  

'não precisa mexer daqui pra baixo
Sub SendMail(strFrom, strTo, strSubject, strMessage)
  Dim cdoConfig
  Dim objMail
  

sch = "http://schemas.microsoft.com/cdo/configuration/" 
Set cdoConfig = Server.CreateObject("CDO.Configuration") 
cdoConfig.Fields.Item(sch & "sendusing") = 2 
cdoConfig.Fields.Item(sch & "smtpserver") = "localhost" 
cdoConfig.fields.update 

  Set objMail = Server.CreateObject("CDO.Message")

  With objMail
   Set .Configuration = cdoConfig
   .From = strFrom
   .To = strTo
   
   .Subject = strSubject 

   .TextBody = strMessage

  ' note que abaixo desligamos o modo html, e deixamos o email em formato txt sem codigos html
 '.HTMLBody = strMessage

   .Send
  End With
End Sub
%>

</html>

Acho que quando faço isso

nome = "teste"

email = "teste@teste.com.br"

subject = "Loja virtual"

e coloco o corpo

corpo = "teste"

ele vai... o que pode ser?

-------------------------

Fiz assim mas o e-mail ficou vazio

nome = "teste"

email = "teste@teste.com.br"

subject = "Loja virtual"

corpo = session("varNome") & vbnewline

corpo = session("varCNPJ_CPF")& vbnewline

corpo = session("varRua")& vbnewline

corpo = session("varCidade")& vbnewline

corpo = session("varUF")& vbnewline

corpo = session("varCEP")& vbnewline

corpo = session("varTel")& vbnewline

E só ta indo pro banco o CPF...

-------------------------

Fiz assim mas o e-mail ficou vazio

nome = "teste"

email = "teste@teste.com.br"

subject = "Loja virtual"

corpo = session("varNome") & vbnewline

corpo = session("varCNPJ_CPF")& vbnewline

corpo = session("varRua")& vbnewline

corpo = session("varCidade")& vbnewline

corpo = session("varUF")& vbnewline

corpo = session("varCEP")& vbnewline

corpo = session("varTel")& vbnewline

E só ta indo pro email o CPF... e todas as session tem valores, que vi no response.write...

Editado por marvi
Link para o comentário
Compartilhar em outros sites

  • 0

Bom... Isso é característico... como disse... a maioria esmagadora das vezes é na formatação do campo da mensagem... Deves reformatar ou utilizr um arquivo externo, o enviando apenas como URL...

Pro BD, você terá que incluir um a um... pelo que vi o asp deve estar tratando todos como o mesmo nome de variável...

Conforme anteriormente explicado, basta corrigir a formatação do corpo da mensagem que acredito que os problemas serão todos corrigidos!

[]s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0

Mas está tudo ok o corpo da mensagem... cada session passa seu texto normal... não tem nada misturado... já que cada texto como viu vai para o seu campo no banco de dado e cada texto cria uma linha no sendmail tambem... entendeu? Não há probemas no texto... se eu imprimir cada session ele mostra o texto normal

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...