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

Envio de email com anexo utilizando o CDOSys não funciona


pedrosbc

Pergunta

Boa tarde, estou com um problema para enviar e-mail com anexo de um formulário utilizando o aspupload para fazer o upload do arquivo no servidor e depois utilizando cookies para anexar o arquivo salvo no e-mail e enviá-lo através do CDOSys, porém não funciona.

Consigo fazer o upload do arquivo para o servidor pelo aspupload, até aqui sem problemas, porém quando tento anexar o arquivo ao e-mail e depois enviá-lo, o arquivo não vai, abaixo estão os códigos dos arquivos que estou utilizando:

A página contato com o formulário é esta:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<!--#include file="aspupload.asp" -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<!--[if IE]>
<link href="css/ie.css" rel="stylesheet" type="text/css" />
<!--[else]>
<link rel="stylesheet" href="css/ns.css" type="text/css" />
<![endif]-->
<script language="JavaScript">
<!--
self.name = "contato";
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}
//-->
</script> 
</head>
<body>
    <div id="cabecalhoesquerda"></div><div id="cabecalho"></div>
    <div id="clear"></div> 
    <div id="esquerda"><a href="http://www.meudominio.com.br/index.html" target="_self">VOLTAR</a></div>
 <form method="post" enctype="multipart/form-data" name="form1" action="enviar.asp">
<div id="tudo">
          <div id="um">
            <label><strong>Nome:</strong>
                <input type="text" name="camponome" id="camponome">
            </label>
            <br />
                <label><strong>E-mail:</strong>
                    <input type="text" name="campoemail" id="campoemail" >
                </label>
                  <br />    
                        <label><strong>Anexo:</strong>           
                                <a href="java script:MM_openBrWindow('anexos.html','anexos','width=640,height=280')">Anexar arquivos</a><br />                   
                                <%
                       if request.cookies("meusite").HasKeys then
                                if request.cookies("meusite")("Arquivo1") <> "" then
                                response.write ""&request.cookies("meusite")("Arquivo1")&", &nbsp;&nbsp;&nbsp;"
                                else
                                response.write ""
                                end if 
                                if request.cookies("meusite")("Arquivo2") <> "" then
                                response.write ""&request.cookies("meusite")("Arquivo2")&", &nbsp;&nbsp;&nbsp;"
                                else
                                response.write ""
                                end if
                                if request.cookies("meusite")("Arquivo3") <> "" then
                                response.write ""&request.cookies("meusite")("Arquivo3")&"<br>"
                                else
                                response.write ""
                                end if
                                if request.cookies("meusite")("Arquivo4") <> "" then
                                response.write ""&request.cookies("meusite")("Arquivo4")&", &nbsp;&nbsp;&nbsp;"
                                else
                                response.write ""
                                end if
                                if request.cookies("meusite")("Arquivo5") <> "" then
                                response.write ""request.cookies("meusite")("Arquivo5")&"<br>"
                                else
                                response.write ""
                                end if
                     else
                               response.write ""
                     end if
                                %>                                 
                    </label> 
                 </div>
         <div id="dois">
                                <input type="submit" value="" id="submit" />
                 </div>
         <div id="tres">
                <label><strong>Mensagem:</strong><br />
                    <textarea name="campomensagem" id="mensagem" cols="74" rows="7"></textarea>
                </label>
                 </div><br>
                 <div id="opcao">
                        <p>Ou se preferir <a href="mailto:contato@meudominio.com.br?subject='Contato pelo site'">clique aqui</a>.</p>
                 </div>
                  <br>
                  <div class="clear"></div><br>
</div><br>
</form><br>
    <div id="peesquerda"></div>
                     <div id="pe"></div>
</div>
</body>
</html>
A página enviar.asp que é a action do meu formulário é o seguinte:
<!--#include file="aspupload.asp"-->
<%
On Error Resume Next
Server.ScriptTimeout=5400

Dim camponome
Dim campoemail
Dim campomensagem
Dim Arquivo1
Dim Arquivo2
Dim Arquivo3
Dim Arquivo4
Dim Arquivo5

camponome = Request.Form("camponome")
campoemail = Request.Form("campoemail") 
campomensagem = Request.Form("campomensagem") 
if request.cookies("meusite")("Arquivo1") <> "" then
Arquivo1 = "e:\minha_pasta_no_servidor\"&request.cookies("meusite")("Arquivo1") 
else
Arquivo1 = ""
end if
if request.cookies("meusite")("Arquivo2") <> "" then
Arquivo2 = "e:\minha_pasta_no_servidor\"&request.cookies("meusite")("Arquivo2")
else
Arquivo2 = ""
end if
if request.cookies("meusite")("Arquivo3") <> "" then
Arquivo3 = "e:\minha_pasta_no_servidor\"&request.cookies("meusite")("Arquivo3")
else
Arquivo3 = ""
end if
if request.cookies("meusite")("Arquivo4") <> "" then
Arquivo4 = "e:\minha_pasta_no_servidor\"&request.cookies("meusite")("Arquivo4")
else
Arquivo4 = ""
end if
if request.cookies("meusite")("Arquivo5") <> "" then
Arquivo5 = "e:\minha_pasta_no_servidor\"&request.cookies("meusite")("Arquivo5")
else
Arquivo5 = ""
end if

campoemail=request.form("campoemail")
camponome=request.form("camponome")
campomensagem=request.form("campomensagem")

Set objCDOSYSCon = Server.CreateObject ("CDO.Configuration")

objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.meudominio.com.br"
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 30
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = "meunome@meudominio.com.br"
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "minhasenha"
objCDOSYSCon.Fields.update


Set objCDOSYSMail = Server.CreateObject("CDO.Message")
Set objCDOSYSMail.Configuration = objCDOSYSCon

objCDOSYSMail.From = campoemail
objCDOSYSMail.To = "meunome@meudominio.com.br"
objCDOSYSMail.Subject = "Contato pelo site"
if Arquivo1 <> "" then
objCDOSYSMail.AddAttachment Arquivo1
else
objCDOSYSMail.AddAttachment
end if
if Arquivo2 <> "" then
objCDOSYSMail.AddAttachment Arquivo2
else
objCDOSYSMail.AddAttachment
end if
if Arquivo3 <> "" then
objCDOSYSMail.AddAttachment Arquivo3
else
objCDOSYSMail.AddAttachment
end if
if Arquivo4 <> "" then
objCDOSYSMail.AddAttachment Arquivo4
else
objCDOSYSMail.AddAttachment
end if
if Arquivo5 <> "" then
objCDOSYSMail.AddAttachment Arquivo5
else
objCDOSYSMail.AddAttachment
end if


strBody = "Dados" & vbCrLf & vbCrLf & _
"Nome: "& camponome & vbCrLf & _
"E-Mail: "& campoemail & vbCrLf & _
"Anexo:"& Arquivo1 & vbCrLf & _
"           "& Arquivo2 & vbCrLf & _
"           "& Arquivo3 & vbCrLf & _
"           "& Arquivo4 & vbCrLf & _
"           "& Arquivo5 & vbCrLf & _
"Mensagem: "& campomensagem

objCDOSYSMail.TextBody = strBody

objCDOSYSMail.fields.update

objCDOSYSMail.Send


Set objCDOSYSMail = Nothing
Set objCDOSYSCon = Nothing
'Set Upload = Nothing

response.cookies("meusite")= ""
response.cookies("meusite")("Arquivo1")=""
response.cookies("meusite")("Arquivo2")=""
response.cookies("meusite")("Arquivo3")=""
response.cookies("meusite")("Arquivo4")=""
response.cookies("meusite")("Arquivo5")=""


Response.write "<html><head><link rel='stylesheet' href='css/ie.css' />
Response.write "<H1>E-mail enviado com Sucesso! Aguarde em breve entraremos em contato.</H1><br><br>"
if Arquivo1 = "" then
response.write ""
else
Response.write "O arquivo "&Replace(Arquivo1,"e:\minha_pasta_no_servidor\","")&" foi anexado ao e-mail.<br>"
end if
if Arquivo2 = "" then
response.write ""
else
Response.write "O arquivo "&Replace(Arquivo2,"e:\minha_pasta_no_servidor\","")&" foi anexado ao e-mail.<br>"
end if
if Arquivo3 = "" then
response.write ""
else
Response.write "O arquivo "&Replace(Arquivo3,"e:\minha_pasta_no_servidor\","")&" foi anexado ao e-mail.<br>"
end if
if Arquivo4 = "" then
response.write ""
else
Response.write "O arquivo "&Replace(Arquivo4,"e:\minha_pasta_no_servidor\","")&" foi anexado ao e-mail.<br>"
end if
if Arquivo4 = "" then
response.write ""
else
Response.write "O arquivo "&Replace(Arquivo4,"e:\minha_pasta_no_servidor\","")&" foi anexado ao e-mail.<br>"
end if
if Arquivo5 = "" then
response.write ""
else
Response.write "O arquivo "&Replace(Arquivo5,"e:\minha_pasta_no_servidor\","")&" foi anexado ao e-mail.<br>"
end if
response.write "<meta http-equiv='refresh' content='5; url=http://www.meudominio.com.br/contato.asp'/>"
%>
O arquivo aspupload.asp que está presente tanto no arquivo com o formulário, quanto no arquivo enviar.asp como um include é o seguinte:
<%
Set Upload = Server.CreateObject("Persits.Upload")
Upload.IgnoreNoPost = True
Count = Upload.Save("e:\minha_pasta_no_servidor")

For Each File in Upload.Files
response.cookies("meusite")(File.Name)=File.FileName
Next
%>

Será que alguém por aqui pode me ajudar?

Desde já agradeço

Valeu

Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

Aparece alguma mensagem de erro? você já tentou enviar apenas 1 anexo, sem aquele monte de condicionais ali... pode ser um erro nas condicionais... testa isso e ve se da certo!

Por ultimo, sempre posete seus codigos entre as tags code, assim:

[code][/ code]

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0

Desculpe não ter usado antes o CITE e o /CITE...bom voltando ao problema, eu tentei sim fazer como você disse, anexando apenas um arquivo, porém ao enviar a mensagem, o arquivo é salvo no servidor e aparece a mensagem do final do script asp do arquivo enviar.asp:

E-mail enviado com Sucesso! Aguarde em breve entraremos em contato.

O arquivo meuarquivoanexado.ext foi anexado ao e-mail.

Em seguida a página é redirecionada para a página contato.asp, porém como já ocorria antes o e-mail não foi enviado, será que você pode me ajudar Rafael?

Acredito que tenha algum problema no código para utilizar o componente CDOSys para enviar o e-mail, porém não estou encontrando...

Link para o comentário
Compartilhar em outros sites

  • 0

Já passei por vários "mistérios" envolvendo o cdo.sys...

Certa vez ele enviava para e-mail @dominioprivado.com.br e de forma alguma para e-mails tipo @hotmail, @MSN ou outros...

Lembro de ter resolvido isso autenticando o envio. Mas notei que você já fez isso...

O que você poderia fazer seria debugar algumas variáveis, para ter certeza de que elas estejam vindas de forma correta do Form... ou simplesmente substituí-las por variáveis teste... tipo:

objCDOSYSMail.From = "email@teste.com.br"
objCDOSYSMail.To = "outroemail@teste.com.br"
objCDOSYSMail.Subject = "Contato pelo site"
Outra coisa que ocorre MUUUUUITO, são problemas na formatação do corpo da mensagem... por isso recomendo como teste:
objCDOSYSMail.TextBody = "corpo teste"

Faça esses testes e veja o que acontece...

[]'s Rafael Spilki

p.s. Não se tratam de tags CITE, e sim, CODE!

Link para o comentário
Compartilhar em outros sites

  • 0

Desculpe Raphael...me enganei era CODE mesmo...agora quanto as variáveis, adicionei as seguintes linhas no arquivo enviar.asp:

response.write campoemail&"<br>"
response.write camponome&"<br>"
response.write ""&request.form("camponome")&"<br>"
response.write ""&request.form("campoemail")&"<br>"

Antes da mensagem "Seu e-mail foi enviado com sucesso! Em breve entraremos em contato. , com a intenção de escrever na tela o que está sendo passado através do formulário e realmente não está mostrando nada na tela somente os <br>, vou reiniciar o pool de aplicações do servidor para ver se resolve este problema...mas por enquanto continuo na mesma sem resolver o problema, o + engraçado é que este arquivo enviar.asp, até semana passada enviava o e-mail, para isso bastava não adicionar nenhum arquivo em anexo, mas agora nem enviar o conteúdo dos inputs text ele está enviando...vai ver é por isso que um tal sr Gates anda tão milhonário, vendendo gato por lebre...:P

Se você ainda puder me dar alguma outra sugestão eu agradeço...

Abs

Link para o comentário
Compartilhar em outros sites

  • 0

Vamos lá:

Sugestões:

Cheque a forma como seu form está mandando os dados GET ou POST, veridicando consequentemente a forma como está resgatando os dados... Cheque tb se seu form está como multipart/... já que está usando o form junto para/com script de upload... nesse caso isso se faz necessário...

Cheque os nomes dos campos e veja se coincide com o request das variaveis...

É por aí que eu iria!

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0

Pois é Rafael, o enctype do meu formulário está setado para multipart/form-data...o método de envio das informações do formulário é o POST e já verifiquei trocentas vezes os nomes das variáveis e garanto que são as mesmas. Já reiniciei o pool de aplicações do meu servidor para ver se poderia ser isso, mas o problema persiste...mas mesmo assim valeu pela ajuda

Abs

Link para o comentário
Compartilhar em outros sites

  • 0

Se tirar esta linha que você disse no ie aparece HTTP 500 Erro interno do servidor, e no firefox aparece:

CDO.Message.1 error '8004020d'

At least one of the From or Sender fields is required, and neither was found.

/enviar.asp, line 71
Porém neste erro que aparece no firefox diz que tanto o campo "para", quanto o campo "de" não foram encontrados. O arquivo enviar.asp não possui 71 linhas, somente 51...quanto aos campos que são indicados no erro estes se encontram nas linha 24 e 25 respectivamente, as quais estou colocando abaixo:
cdoMessage.From = ""&request.form("campoemail")&""
cdoMessage.To = "meuemail@meudominio.com.br"
Mas além desta maneira que foi escrito já tentei também as seguintes maneiras:
cdoMessage.From = request.form("campoemail")
cdoMessage.To = "meuemail@meudominio.com.br"
ou ainda:
cdoMessage.From = request("campoemail")
cdMessage.To = "meuemail@meudominio.com.br"
bem como:
campoemail = request.form("campoemail")


cdoMessage.From = campoemail
cdoMessage.To = "meuemail@meudominio.com.br"

e em qualquer uma destas tentativas o erro foi o mesmo...

Pelo o que entendí o valor dos campos não estão sendo passados pelo request.form(), como posso então resolver este problema, Rafael?

Link para o comentário
Compartilhar em outros sites

  • 0

Fiz este teste que você me pediu 2 vezes(no primeiro declarei a variavel:Dim para; na segunda não declarei a variavel) e nas duas vezes deu o mesmo erro... estou colocando o código como está agora.

Primeiro a página onde tem o formulário:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<!--#include file="aspupload.asp" -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<!--[if IE]>
<link href="css/ie.css" rel="stylesheet" type="text/css" />
<!--[else]>
<link rel="stylesheet" href="css/ns.css" type="text/css" />
<![endif]-->
&lt;script language="JavaScript">
<!--
self.name = "contato";
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}
//-->
</script> 
</head>
<body>
    <div id="cabecalhoesquerda"></div><div id="cabecalho"></div>
    <div id="clear"></div> 
    <div id="esquerda"><a href="http://www.meudominio.com.br/index.html" target="_self">VOLTAR</a></div>
 <form method="post" enctype="multipart/form-data" name="form1" action="enviar.asp">
<div id="tudo">
    <div id="um">
        <label><strong>Nome:</strong>
            <input type="text" name="camponome" id="camponome">
        </label>
        <br />
                <label><strong>E-mail:</strong>
                    <input type="text" name="campoemail" id="campoemail" >
                </label>
              <br />    
                                <label><strong>Anexo:</strong>           
                                                <a href="java script:MM_openBrWindow('anexos.html','anexos','width=640,height=150')">Anexar arquivo</a><br />                   
                                                <%
                                                 if request.cookies("meusite").HasKeys then
                                                          if request.cookies("meusite")("Arquivo1") <> "" then
                                                                    response.write ""&request.cookies("meusite")("Arquivo1")&", &nbsp;&nbsp;&nbsp;"
                                                          else
                                                                    response.write ""
                                                          end if 
                                                 else
                                                           response.write ""
                                                 end if
                                                 %>                                 
                                </label> 
                </div>
    <div id="dois">
                                <input type="submit" value="" id="submit" />
                </div>
    <div id="tres">
                <label><strong>Mensagem:</strong><br />
                    <textarea name="campomensagem" id="mensagem" cols="74" rows="7"></textarea>
                </label>
                </div><br>
                <div class="clear"></div><br>
</div><br>
</form><br>
    <div id="peesquerda"></div>
                <div id="pe"></div>
</body>
</html>
O arquivo enviar.asp é o seguinte:
<%

Dim campoemail
Dim camponome
Dim campomensagem

campoemail = request.form("campoemail")
camponome = request.form("camponome")
campomensagem = request.form("campomensagem")

Set cdoConfig = Server.CreateObject("CDO.Configuration")

cdoConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
cdoConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
cdoConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.meudominio.com.br"
cdoConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
cdoConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 30
cdoConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "meunome@meudominio.com.br"
cdoConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "minhasenha"
cdoConfig.Fields.update
Set cdoMessage = Server.CreateObject("CDO.Message")
Set cdoMessage.Configuration = cdoConfig


cdoMessage.From = campoemail
cdoMessage.To = "contato@meudominio.com.br"
cdoMessage.Subject = "Contato pelo site"

strBody = "Dados" & vbCrLf & vbCrLf & _
"Nome:"& request.form("camponome")& vbCrLf & _
"E-Mail:"& request.form("campoemail")& vbCrLf & _
"Mensagem:"& request.form("campomensagem")

strBody = strBody & "."
cdoMessage.TextBody = strBody

cdoMessage.Send

Set cdoMessage = Nothing
Set cdoConfig = Nothing


Response.write "<html><head><link rel='stylesheet' href='css/ie.css' /></head><body>"
response.write "<font color='white'>"
response.write campoemail&"<br>"
response.write camponome&"<br>"
response.write para&"<br>"
response.write ""&request.form("camponome")&"<br>"
response.write ""&request.form("campoemail")&"<br>"
Response.write "<H1>E-mail enviado com Sucesso! Aguarde em breve entraremos em contato.</H1><br><br>"
response.write "<meta http-equiv='refresh' content='5; url=http://www.meudominio.com.br/contato.asp'/>"
%>
E por último o arquivo aspupload.asp é o seguinte:
<%
Set Upload = Server.CreateObject("Persits.Upload")
Upload.IgnoreNoPost = True
Count = Upload.Save("e:\minha_pasta_no_servidor")

For Each File in Upload.Files
response.cookies("meusite")(File.Name)=File.FileName
response.write "<br>"
Next
%>

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

  • 0

Fala Pedro, Beleza?

Não sei se descobri exatamente o porque do problema... mas certamente descobri alguns errinhos... vamos a eles:

no form linha 12:

&lt;script language="JavaScript">
tem que ser assim:
<script language="JavaScript">
na linha 56 está assim:
<textarea name="campomensagem" id="mensagem" cols="74" rows="7"></textarea>
quando o melhor seria assim:
<textarea name="campomensagem" id="campomensagem" cols="74" rows="7"></textarea>
Da linha 29 até a linha 34 está assim:
strBody = "Dados" & vbCrLf & vbCrLf & _
"Nome:"& request.form("camponome")& vbCrLf & _
"E-Mail:"& request.form("campoemail")& vbCrLf & _
"Mensagem:"& request.form("campomensagem")

strBody = strBody & "."

e eu deixaria assim:

cdoMessage.TextBody = "Dados" & vbCrLf & vbCrLf & "Nome:"& request.form("camponome")& vbCrLf & "E-Mail:"& request.form("campoemail")& vbCrLf & "Mensagem:"& request.form("campomensagem")

No mais era isso... fiz essas modificações e testei aqui o recebimento e envio das informações e funcionou tudo belezinha! se não funcionar aí pra você deve ser algo no server... estás usando servidor local?

[]'s Rafael Spilki

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,5k
×
×
  • Criar Novo...