Ir para conteúdo

POWERED BY:

Arquivado

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

l_nando

[Resolvido] Enviar e-mail

Recommended Posts

Pessoal, boa noite!

 

Estou tentando criar uma pagina simple de envio de e-mail, mas surgiu um pequeno problema:

 

Prmeiro leio um arquivo txt para depois enviar o e-mail, mas ele está lendo só a primeira linha e não as demais.

Está página é para eu poder mandar e-mails de algumas informações para os clientes, só que´está enviando somente para o cliente da primeira linha, por enquanto estou testando com meus e-mails particulares, para depois fazer o teste real.

 

Segue o cod.:

<link href="estilo.css" rel="stylesheet" type="text/css" />
<%
'Setar um valor de execução de script
Server.ScriptTimeout = 240

'Iremos também fazer com que o script siga quando ocorrer um erro
'Para podermos tratá-lo após o script
on error resume next


'************************* Início do Upload ***************************

'Utilizaremos a função On Error Resume Next para ignorar qualquer erro que possa vir a acontecer, e posteriormente iremos identifica-lo e só então comunicarmos ao usuário.
On Error Resume Next

Dim objUpload

'Cria uma instancia do objeto Upload e atribui a variável objUpload.
Set objUpload = server.CreateObject("Dundas.Upload.2")

'Determinamos True em UseVirtualDir para que possamos utilizar o caminho virtual.
'objUpload.UseVirtualDir = false

'Salva o arquivo com o nome real enviado.
objUpload.UseUniqueNames = False

'Utilizamos o caminho virtual que determina onde serão salvos os arquivos carregados.
objUpload.Save "C:\email2l"

'Limpa a instância criada na memória do servidor.
Set objUpload = nothing

'Aqui nós verificaremos se ocorreu algum tipo de erro com os dados carregados. O objeto Err guarda o último erro, caso nenhum erro tenha ocorrido o objeto conterá o valor 0 (zero) com isso podemos verificar o valor do objeto e determinarmos qual mensagem será dada ao usuário.
If Err <> 0 Then

'Aqui estamos imprimindo na tela do usuário a descrição do erro e seu número.
Response.Write Err.Description & " " & Err.Number & "<br>"
Response.Write "<font face=Verdana, Arial, Helvetica, sans-serif size=2><b>Houve erro(s) ao carregar o(s) arquivo(s) anexado(s)!<br><a href=javascript:history.back(-1)>Voltar</a> </b></font>"
Else
'Se o objeto Err for igual a 0 será apresentado a mensagem de sucesso e os dados estarão salvos no caminho determinado acima
Response.Write "<font face=Verdana, Arial, Helvetica, sans-serif size=2><b>Seus dados foram carregados com sucesso!</b></font>"
End If
Response.Write "</BODY></HTML>"
'Fim de grava_anexo

Dim objFSO

'Aqui que daremos início ao sistema
'Criaremos o objeto FileSystemObject
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

Dim varArquivo

'Agora, com o uso do FSO, iremos abrir o arquivo texto que iremos criar
Set varArquivo = objFSO.OpenTextFile(server.MapPath("email.txt"), 1)

dim arrayLinha

'Agora que o arquivo já foi aberto, iremos ler linha por linha
'O comando AtEndOfStream determina que iremos repetir o processo abaixo
'até o fim do arquivo
Do while not varArquivo.AtEndOfStream

arrayLinha=split(varArquivo.ReadLine())

Dim Mail, Vtxtemail, Vtxtass

Vtxtemail = request.Form("txtemail")
Vtxtass = request.Form("txtass")


Vtxtemail = request.Form("txtemail")

Set Mail = Server.CreateObject("Persits.MailSender") 
Mail.Host = "smtp.dominio.com.br"
Mail.From = "nome@dominio.com.br"
Mail.FromName = "nome sobrenome"

Mail.AddAddress arrayLinha(0)
Mail.Subject = request.Form("emlass")
Mail.Body = request.Form("emlmen")


    On Error Resume Next
	if Mail.Send then
	response.Redirect("email.asp")
    else If Err <> 0 Then
    Response.Write "Ocorreu o seguinte erro: " & Err.Description
    End If
	End if

loop

'Destruiremos e fecharemos o FSO e o acesso ao arquivo de texto
varArquivo.Close
Set varArquivo = Nothing
Set objFSO = Nothing

%>
<script>
<!--
setTimeout("redireciona()",1000)
function redireciona()
{
window.location.href("email.asp");
}
-->
</script>

Muito obrigado pela ajuda.

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo, tudo bem !

você pode ser mais específico, não entendi muito bem sua dúvida...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim.

 

Tenho um arquivo txt com 10 linha, primeiramente mando o sistema ler esse arquivo, depois quero pegar essas linhas e enviar um e-mail, mas o sistema está colocando tudo em uma linha só e e o e-mail é enviado somente para o 1º endereço.

 

como faço para ele ler linha por linha?

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Num TXT com este conteúdo.

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

Freecode|http://www.freecode.com.br

MSDN|http://www.msdnbrasil.com.br

TechNet|http://www.technetbrasil.com.br

Freecode|http://www.freecode.com.br/drArtigos

Microsoft|http://www.microsoft.com.br

Forum|http://www.freecode.com.br/forum

Artigos|http://www.freecode.com.br/drArtigos

Tutoriais|http://www.freecode.com.br/tutorias

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

 

<html>
<head>
<title>Busca em FSO</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#CCCCCC">
<form method="post" action="busca_fso_action.asp">
  <table width="650" cellpadding="1" cellspacing="0" border="1" align="center">
    <tr> 
      <td> <div align="center"><font color="#666699" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>:: 
          Entre com a pesquisa</strong></font></div></td>
    </tr>
    <tr> 
      <td><font color="#666699" size="2"><strong><font face="Verdana, Arial, Helvetica, sans-serif">Pesquisar:</font> 
        <input name="pesquisa" type="text" id="pesquisa" size="20" maxlength="50">
          
        <input type="submit" name="Submit" value="buscar">
        <input type="hidden" name="botao" value="true">
        </strong></font> </td>
    </tr>
    <tr>
      <td> </td>
    </tr>
  </table> 
</form>
</body>
</html>

 

 

<% Option Explicit
' declaro as variaveis
Dim fso, fsofile,varpesquisa,varcaminho,contador,linha,icampo

' recupero as variaveis
varpesquisa=Trim(request.form("pesquisa"))
' retiro o aspas simples
varpesquisa=Replace(varpesquisa,"'","")

' crio o FSO

Set fso=Server.createobject("Scripting.FileSystemObject")
' abro o arquivo txt
varcaminho=Server.MapPath("texto.txt")
Set fsofile=fso.opentextfile(varcaminho,1,true,false)
	if fsofile.AtEndOfStream = true then
		response.Redirect("busca_fso_form.asp?msgeof=1")
	else
		contador=0
		while not fsofile.AtEndOfStream = true
			linha=fsofile.readline
			icampo=Split(linha,"|",-1,1)
				if LCase(varpesquisa) = LCase(icampo(0)) then
					response.Write("<a href='"&icampo(1)&"'>"& icampo(0)&"</a><br>")
     			     contador=contador + 1
				end if
		wend
				response.Write("<br> Total de registros encontrados:") &contador
	end if
	fsofile.close
	Set fsofile=nothing
	Set fso= nothing
	%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então.

 

Ler o arquivo eu estou conseguindo, o que está pegando é o seguinte:

 

O arquivo txt tem o seguinte conteúdo:

 

nome1@dominio.com.br

nome2@dominio.com.br

nome3@dominio.com.br

nome4@dominio.com.br

 

 

quando mando ler para enviar o email, aparece assim:

 

 

nome1@dominio.com.br nome2@dominio.com.br nome3@dominio.com.br nome4@dominio.com.br

 

daí, só envia o e-mail para o 1º endereço e não para todos.

Me parece que ele não está entendendo os enters do txt.

 

Vlw

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

como você esta lendo ele assim

 

nome1@dominio.com.br nome2@dominio.com.br nome3@dominio.com.br nome4@dominio.com.br

 

dá um Split no espaço em branco , tipo assim:

 

while not fsofile.AtEndOfStream = true
                        linha=fsofile.readline
                        icampo=Split(linha," ",-1,1)
                                
'aqui você coloca o loop para ele para enviar os emails usando o icampo(x)
'...
'...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então.

 

Fiz o que você falou e agora está aparecendo assim:

 

nome1@dominio.com.brnome2@dominio.com.brnome3@dominio.com.brnome4@dominio.com.br

 

rsrsrs.

 

Tô ficando maluco.

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

quando você usa o split ele "quebra" o texto em pasrtes, por isso falei para usar , por exemplo

icampo(0) será o 1º email. icampo(1) segunda email, e dae você concatena no loop para enviar 1 de cada vez...

 

no meu exemplo eu tenho o texto

 

TechNet|http://www.technetbrasil.com.br

 

nele eu dou um Split no caracter | para "quebrar o texto", entendeu....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, desculpa minha burrice, mas vou te mostrar como está.

Por favor me corrija se estiver errado:

 

.txt :

 

nome1@dominio.com.br

nome2@dominio.com.br

nome3@dominio.com.br

nome4@dominio.com.br

 

Cod:

 

do while not varArquivo.AtEndOfStream = true
                        linha=varArquivo.readline
                        icampo=Split(linha," ",-1,1)
                                
Set Mail = Server.CreateObject("Persits.MailSender") 
Mail.Host = "smtp.dominio.com.br"
Mail.From = "meunome@dominio.com.br"
Mail.FromName = "Meu Nome"
Mail.AddAddress icampo(0)
Mail.Subject = Vemlass
Mail.Body = request.Form("emlmen")


    On Error Resume Next
	if Mail.Send then
	response.Redirect("email.asp")
    else If Err <> 0 Then
    Response.Write "Ocorreu o seguinte erro: " & Err.Description
    End If
	End if

loop

'Destruiremos e fecharemos o FSO e o acesso ao arquivo de texto
varArquivo.Close
Set varArquivo = Nothing
Set objFSO = Nothing

Assim só manda para o 1º e-mail.

 

Valeu pela ajuda!

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meus pitacos:

 

não vi no final um comando para que o fso mudasse para a linha seguinte, não me lembro de cabeça agora, mas no w3scholls deve ter esse comando.

 

no split, você retira o espaço em branco, mas e se colocar um >; e na linha

Mail.AddAddress icampo(0)

colocar

Mail.AddAddress "<" & icampo(0)

 

não falta um = no Mail.AddAddress ?

tipo Mail.AddAddress = icampo(0)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então.

 

Com o "<" e "=" nem envia o email.

 

Nossa, tá osso, rsrsrs!

 

Vlw, abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Procurando sobre isso, achei isto:

http://www.w3schools.com/asp/showasp.asp?filename=demo_readlines

 

a diferença que notei foi esta:

do while f.AtEndOfStream = false

 

se colocar

Mail.AddAddress (f.ReadLine)

 

ou algo parecido será que funciona ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora dá o seguinte erro:

 

Failed to get the boundary. -2147467259

Houve erro(s) ao carregar o(s) arquivo(s) anexado(s)!

Voltar nome@dominio.com.br

 

Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual o numero do erro e linha...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só aparece isso.

 

Failed to get the boundary. -2147467259

Houve erro(s) ao carregar o(s) arquivo(s) anexado(s)!

Voltar nome@dominio.com.br

Compartilhar este post


Link para o post
Compartilhar em outros sites

tira o On Error Resume Next

para ver o erro ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, o erro é esse:

 

Dundas.Upload.2 (0x80004005)

Failed to get the boundary.

/email2l/envia.asp, line 30

 

 

e a linha é:

 

objUpload.Save "C:\email2l"

Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

veja se o arquivo não esta ultrapassando o tamanho máximo do arquivo em Bytes

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse erro que estava dando eu coloquei no form principal o trecho:

 

enctype="multipart/form-data" na tag form.

 

mas continua mandando e-mail só para o da linha 1.

 

vlw.

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.