Ir para conteúdo

POWERED BY:

Arquivado

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

webfuture

Sistema de newsletter e Windows 2003 SERVER

Recommended Posts

Olá pessoal, tenho montado um sistema de newsletter nos moldes deste que a locaweb e outros provedores tem para envio de emails marketing em massa para x clientes, porém, em teste o que esta acontecendo, o sistema foi feito com asp e mysql (provavelmente migraremos para asp e sql server 2008).

 

Usamos o smtp local do IIS para envio dos e-mails, tudo estava acontecendo normalmente porém agora o que estou notando, todas as campanhas agendadas ao inves dos emails chegarem aos seus destinatarios elas ficam parados na pasta mailroot/queue, pelo que pesquisei mensagens paradas ali nao são enviadas, ali é tipo a fila para envio, ja limpei esta pasta e mandei envir novamente a campanha mas ele sempre vai aprar ali e dali nao sai, não sei se ao inves de usar o smtp do iis devo usar outro, porque nao posso usar o smtp dalocaweb que é a nossa hospedagem porque eles travam o envio em grande massa, nem sei se tem algum programa ou algo do genero que faça isto funcionar adequadamente, alguem sabe me ajudar?

 

Não sei se aqui é o lugar mais indicado mas não achei outro melhor.

 

Atenciosamente,

Xavier

Compartilhar este post


Link para o post
Compartilhar em outros sites

verifique se o smtp esta configurado corretamente , um bom envio de email em massa k uso é esse, pode te ajudar

<!--#include file="conexao.asp"--> 
<% 
varNome = Session("Login") 
' aqui verificamos se o user esta logado, você pode 
if varNome = "" then 
response.redirect("checerro.asp") 
end if 

dim conexao 
Call abre_conexao 

' recupera as variáveis para enviar os e-mails 
'Lembrando que antes de fazer o envio, eu fiz um formulário para a 
'pessoa poder escolher por qual filtro ele quer filtrar os e-mails 
'E também fiz com que ele pudesse escolher o arquivo a ser enviado 
'Isso utilizando o Componente de Upload ASpUpload. 

assunto = request.form("assunto") 
validade = request.form("validade") 
empresa = request.form("empresa") 
arquivo = request.form("arquivo") 
str = request.form("str") 
sql = request.form("sql") 
' Como a pausa é feita por paginação, pag é a variavel que vai dizer em qual loop está agora 

pag = request.form("pag") 
if pag = "" then 
pag = 1 
end if 
per = request.form("per") 
CodigoCampanha = request.form("CodigoCampanha") 
' reg é o nuemro de e-mails que ele irá enviar por bloco. 
reg = 400 

'Isto le o arquivo no qual foi feito o Upload 
' strpatha é um path fixo que eu tenho na pagina de include.(para facilitar o código) 
Set Objeto = CreateObject ("Scripting.FileSystemObject") 
set GV = Objeto.OpenTextFile(strpath &arquivo,1,true,false) 
HTML = GV.ReadAll 
GV.close 
Set Objeto = nothing 
lista = Replace(lista," ","") 

HTML = HTML 
HTML2 = HTML 

' A var sql, contem a SQL para de acordo com o filçtro que a pessoa escolheu 
if sql <> "" then 

' Aqui eu pego quantos e-mails seram enviados 

sqlCont = "Select Count(Email) as Cont From Emails where ("&str&") and (Ativo = true)" 
Set rsCont = conexao.execute(sqlCont) 
NumReg = rsCont("Cont") 
' Aqui iremos determinas qual é o numero maximo de blocos 
Maxpag = int(Cint(NumReg)/ Cint(reg))+1 
Set rsCont = nothing 

' Testamos se irá ter somente um bloco, se sim iremos enviar todos os e-mails de uma vez 

if Cint(NumReg) <= Cint(reg) then 
Set rs = conexao.execute(sql) 

Set rsMax = Server.CreateObject("ADODB.Recordset") 
rsMax.Open "Select Max(CodigoCampanha) As max_cod From Campanhas", conexao 
If IsNull(rsMax("max_cod")) Then 
CodigoCampanha = 100 
Else 
CodigoCampanha = rsMax("max_cod") + 1 
End If 
rsMax.Close 
Set rsMax = Nothing 

validade = date + CInt(validade) 
sqlCampanha = "Insert Into Campanhas(CodigoCampanha,CodigoEmpresa,Assunto,Arquivo,Data,Validade) Values ("&CodigoCampanha&", "&empresa&", '"&assunto&"', '"&arquivo&"', '"&Now()&"','"&validade&"')" 
Set rsCampanha = conexao.execute(sqlCampanha) 
contador = 0 
contador2 = 1 
per = 1 
per2 = 1 
%> 
<script language="JavaScript"> 
window.open('enviando.asp','enviando','width=350 height=200 status=yes'); 
</script> 
<% 
while not rs.eof 
per = (100 * Cint(contador2))/Cint(NumReg) + 1 

if Int(per) > Int(per2) then 
per2 = per 
%> 
<script> 
window.open('javascript:conta(<%=Int(per)%>,<%=Int(contador2)%>);','enviando','width=350 height=200 status=yes'); 
</script> 
<% 
end if 
%> 
<% 

HTML = HTML2 
sqlTestEnv = "Select Email From Enviados where CodigoCampanha = "&CodigoCampanha&" and Email = '"&rs("Email")&"'" 
Set rsTestEnv = conexao.execute(sqlTestEnv) 
if rsTestEnv.EOF then 
aux = rs("Fantasia") 
If InStr(aux, " ") > 0 Then 
aux = Left(aux, InStr(aux, " ")-1 ) 
End If 
Empresa = UCase(aux) 

HTML = replace(HTML,"#Nome#",rs("Nome")) 
HTML = replace(HTML,"#CodigoCampanha#",CodigoCampanha) 
HTML = replace(HTML,"#Email#",rs("Email")) 
HTML = replace(HTML,"#Empresa#",Empresa) 

response.write HTML 
assunto2 = replace(assunto,"#Nome#",rs("Nome")) 

Dim myMail 
Set myMail = CreateObject("CDONTS.NewMail") 
myMail.From = "teste@teste.com"
myMail.To = rs("Email") 
myMail.Subject = assunto2 
myMail.BodyFormat = 0 
myMail.MailFormat = 0 
myMail.Body = HTML 
myMail.Send 
contador = contador +1 
contador2 = Cint(contador2) +1 
Set myMail = Nothing 

sqlEnviados = "Insert Into Enviados(CodigoCampanha,Email,Nome,Cargo,Fantasia,Telefone,Data) Values ("&CodigoCampanha&",'"&rs("Email")&"','"&rs("Nome")&"','"&rs("Cargo")&"','"&rs("Fantasia")&"','"&rs("Telefone")&"','"&Now()&"')" 
Set rsEnviados = conexao.execute(sqlEnviados) 
end if 
rs.MoveNext 
wend 
fim = true 
else 

' se tivermos mais de um bloco iremos ter que fazer a paginação 

Set rs = conexao.execute(sql) 
' Aqui inserimos na tabela Campanha os dados da mesma, só inserimos uma vez. 
'É por isso que tomos este if, pois a 1ª vez o Codigo será branco. 
if CodigoCampanha = "" then 
Set rsMax = Server.CreateObject("ADODB.Recordset") 
rsMax.Open "Select Max(CodigoCampanha) As max_cod From Campanhas", conexao 
If IsNull(rsMax("max_cod")) Then 
CodigoCampanha = 100 
Else 
CodigoCampanha = rsMax("max_cod") + 1 
End If 
rsMax.Close 
Set rsMax = Nothing 

validade = date + CInt(validade) 
sqlCampanha = "Insert Into Campanhas(CodigoCampanha,CodigoEmpresa,Assunto,Arquivo,Data,Validade) Values ("&CodigoCampanha&", "&empresa&", '"&assunto&"', '"&arquivo&"', '"&Now()&"','"&validade&"')" 
Set rsCampanha = conexao.execute(sqlCampanha) 
end if 
' aqui contador é o que vale a quantidade de e-mails que esta sendo enviado e-mails 
' contador 2 é um contador auxiliar para abrirmos uma pag de porcetagem do envio 
contador = ((Cint(pag) -1) * Cint(reg)) + 0 
contador2 = ((Cint(pag) -1) * Cint(reg)) + 1 
//per = 1 
//per2 = 1 
%> 
' aqui testamos se é primeira vez que executamos a página, se sim iremos abrir a pag de porcentagem 
<% 
if Cint(pag) = 1 then 
%> 
<script language="JavaScript"> 
window.open('enviando.asp','enviando','width=350 height=200 status=yes'); 
</script> 
<% 
end if 
%> 
' Aqui testamos se é a primeira vez que executamos a página, se não for nos iremos ter que passar para os próximos 400 registros da tabela 
<% 
NumReg2 = Cint(reg) * (Cint(pag)-1) 
If NumReg2 > 0 then 
For LinkTemp = 1 to NumReg2 
if rs.Eof = False then 
rs.MoveNext 
end if 
Next 
end if 

regatual = 1 
' aqui fazemos o loop da tabela de e-mails 
while not rs.eof and regatual <= Cint(reg) 
' per é uma variavel que ´rá ser envia para a página de porcentagem para mmostrar o andamento do envio 

per = (100 * Cint(contador2))/Cint(NumReg) + 1 

if Int(per) > Int(per2) then 
per2 = per 
%> 
' este script atualiza a pagina de porcentagem sempre que novos e-mails são enviados 
<script> 
window.open('javascript:conta(<%=Int(per)%>,<%=Int(contador2)%>);','enviando','width=350 height=200 status=yes'); 
</script> 
<% 
end if 
%> 
<% 
' Aqui fazemos uns replaces no arquivo (HTML) que foi feito o Upload. 
'Isto é para podermos personalizar os e-mails 
HTML = HTML2 
sqlTestEnv = "Select Email From Enviados where CodigoCampanha = "&CodigoCampanha&" and Email = '"&rs("Email")&"'" 
Set rsTestEnv = conexao.execute(sqlTestEnv) 
if rsTestEnv.EOF then 
aux = rs("Fantasia") 
If InStr(aux, " ") > 0 Then 
aux = Left(aux, InStr(aux, " ")-1 ) 
End If 
Empresa = UCase(aux) 

HTML = replace(HTML,"#Nome#",rs("Nome")) 
HTML = replace(HTML,"#CodigoCampanha#",CodigoCampanha) 
HTML = replace(HTML,"#Email#",rs("Email")) 
HTML = replace(HTML,"#Empresa#",Empresa) 

response.write HTML 
assunto2 = replace(assunto,"#Nome#",rs("Nome")) 
' Aqui estamos enviando os e-mails em formato HTML 

Dim myMail2 
Set myMail2 = CreateObject("CDONTS.NewMail") 
myMail2.From = "teste@teste.com.br" 
myMail2.To = rs("Email") 
myMail2.Subject = assunto2 
myMail2.BodyFormat = 0 
myMail2.MailFormat = 0 
myMail2.Body = HTML 
myMail2.Send 
regatual = regatual + 1 
contador = Cint(contador) +1 
contador2 = Cint(contador2) +1 
Set myMail2 = Nothing 
' Aqui gravamos em outra tablela todos os e-mails que para onde foram enviados. Para relatórios 


sqlEnviados = "Insert Into Enviados(CodigoCampanha,Email,Nome,Cargo,Fantasia,Telefone,Data) Values ("&CodigoCampanha&",'"&rs("Email")&"','"&rs("Nome")&"','"&rs("Cargo")&"','"&rs("Fantasia")&"','"&rs("Telefone")&"','"&Now()&"')" 
Set rsEnviados = conexao.execute(sqlEnviados) 
end if 
rs.MoveNext 
wend 
end if 
'Testamos se é o ultimo loop, se sim iremos mostrar direto quantos e-mails foi enviado 
if (Cint(pag) >= Cint(Maxpag)) then 
fim = true 
else 

' Se naõ iremos fazer fim = falso para passarmos para o próximo bloco de e-mails após um tempo 
fim = false 
pag = Cint(pag) + 1 
end if 
end if 
%> 
<% 
' Aqui testamos se chegou ao fim ou n~~ao, se não chegou ainda 
'iremos fazer um formulário com todos os dados que teremos que ter 
' iremos fazer um script para enviar este formulário novamente após um tempo 
if fim = false then 
%> 
<HTML> 
<HEAD> 
<Title></Title> 
<script> 
function Envia() 
{ 
document.form.submit(); 
} 

setTimeout("Envia();",120000); 

</script> 
</HEAD> 
<BODY> 
<form name="form" method="post" action="camp3.asp"> 
<input type="hidden" name="sql" value="<%=sql%>"> 
<input type="hidden" name="assunto" value="<%=assunto%>"> 
<input type="hidden" name="arquivo" value="<%=arquivo%>"> 
<input type="hidden" name="empresa" value="<%=empresa%>"> 
<input type="hidden" name="str" value="<%=str%>"> 
<input type="hidden" name="pag" value="<%=pag%>"> 
<input type="hidden" name="codigocampanha" value="<%=CodigoCampanha%>"> 
<input type="hidden" name="per" value="<%=per%>"> 
</form> 
</BODY> 
</HTML> 
<% 
else 
' Se chegou ao fim iremos mostrar a quantidade de e-mails que foi gerada 
%> 
<html> 
<head> 
<title>Email´s</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
</head> 

<body bgcolor="#FFFFFF" text="#000000"> 
<table width="100%" border="0" cellspacing="0" cellpadding="0"> 
<tr> 
<td> 
<div align="center"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>CONFIRMAÇÃO 
DO CADASTRO DE CAMPANHA</b></font></div> 
</td> 
</tr> 
<tr> 
<td> </td> 
</tr> 
<tr> 
<td> </td> 
</tr> 
<tr> 
<td> 
<table width="70%" border="0" cellspacing="0" cellpadding="0" align="center"> 
<% 
if Cint(contador) > 0 then 

sqlEmp = "Select * From Empresas where CodigoEmpresa = "&empresa&"" 
Set rsEmp = conexao.execute(sqlEmp) 

msgBody = "<HTML>" & vbcrlf 
msgBody = msgBody & "<body>" & vbcrlf 
msgBody = msgBody & "Olá " & rsEmp("Nome") &",<br><br>" & vbcrlf 
msgBody = msgBody & "A campanha com assunto : " & assunto &"<br>" & vbcrlf 
msgBody = msgBody & "Foi disparada para "&contador&" email(s) de sua lista de e-mails.<br><br>" & vbcrlf 
msgBody = msgBody & "Verifique logo abaixo o corpo do e-mail que foi disparado: <br><br> " & vbcrlf 
msgBody = msgBody & HTML2 & vbcrlf 
msgBody = msgBody & "</body>" & vbcrlf 
msgBody = msgBody & "</HTML>" & vbcrlf 

'response.write msgBody 

Dim myMail3 
Set myMail3 = CreateObject("CDONTS.NewMail") 
myMail3.From = "teste@teste.co
myMail3.To = "xan@xan.com.br"'rsEmp("Email") 
myMail3.Subject = "Comprovande do envio da campanha de Web Marketing: """ & assunto &"""" 
myMail3.BodyFormat = 0 
myMail3.MailFormat = 0 
myMail3.Body = HTML2 
myMail3.Send 
Set myMail3 = Nothing 

%> 
<tr> 
<td> 
<table width="100%" border="0" cellspacing="1" cellpadding="0" bgcolor="#333333"> 
<tr> 
<td bgcolor="#DDFFEE"> 

<div align="center"><font size="3" face="Verdana, Arial, Helvetica, sans-serif"><br> 
<br> 
Campanha enviada com sucesso para<br> 
<%=Contador & " "%> emil(s).<br> 
<br> 
</font></div> 
</td> 
</tr> 
</table> 
</td> 
</tr> 
<% 
else 
%> 
<tr> 
<td> 

<table width="100%" border="0" cellspacing="1" cellpadding="0" bgcolor="#333333"> 
<tr> 
<td bgcolor="#DDFFEE"> 
<div align="center"><font size="3" face="Verdana, Arial, Helvetica, sans-serif"><br> 
</font><font size="4"><font face="Verdana, Arial, Helvetica, sans-serif"><br> 
<font size="3">HÁ ALGUM CAMPO OBRIGATÓRI EM 
BRANCO<br> 
POR FAVOR REALIZE A OPERAÇÃO<br> 
NOVAMENTE!! </font></font></font><font size="3" face="Verdana, Arial, Helvetica, sans-serif"><br> 
<br> 
</font></div> 
</td> 
</tr> 
</table> 
</td> 
</tr> 
<% 
end if 
%> 
</table> 
</td> 
</tr> 
</table> 
<br> 
<br> 
<table width="94%" border="0" cellspacing="0" cellpadding="0" align="center"> 
<tr> 
<td width="50%" height="13"> 
<div align="center"><a href="camp.asp"><font color="#003300" size="2" face="Verdana, Arial, Helvetica, sans-serif"><b><font color="#000000"><< 
Voltar </font></b></font></a> </div> 
</td> 
<td width="50%" height="13"> 
<div align="center"><a href="checlogin2.asp"><font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#000000"><b><font size="2"><< 
Voltar ao Menu Inicial</font></b></font></a></div> 
</td> 
</tr> 
</table> 
</body> 
</html> 
<% 
end if 
%> 
<% 
Call fecha_conexao 
Set rs = Nothing 
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá xanburzum, valeu pela dica, vou verificar o script que você indicou, quanto a forma que estou usando você acha que aguentaria o tranco (rs) usando o iis e o smtp dele?

 

Xavier

Compartilhar este post


Link para o post
Compartilhar em outros sites

talvez por ser no localhost, mas ele estando configurado corretamente

vai, mas muitas vezes melhor ter um outros provedores k ja oferecem o serviço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá xanburzum, gostaria de tirar uma dúvida, pois não manjo muito de configuração de servidor, além de instalar o smtp do iis e permitir o envio do ip do servidor precisa configurar servidor de dns nele também ou algo mais complexo ?

 

Se bem que antes ia, mas achei melhor perguntar.

 

SE sim, tem algum link da configuração?

 

XAvier

Compartilhar este post


Link para o post
Compartilhar em outros sites

O componente fundamental que determina a forma como o servidor gerencia as mensagens de correio electrónico é o serviço ou domínio. Service domains can be either local or remote. Serviço domínios pode ser local ou remoto. A local service domain is a Domain Name System (DNS) domain that's serviced locally by the server. Um domínio é um serviço local Domain Name System (DNS) do domínio que o serviço localmente pelo servidor. A remote service domain is a DNS domain that's serviced by another server or mail gateway. Um serviço remoto é um domínio DNS do domínio que servida por correio electrónico ou outro servidor gateway.

 

You can deliver e-mail to a locally hosted or remote SMTP server by completing the following steps: Você pode emitir e-mail a um nível local ou remoto hospedado no servidor SMTP através do preenchimento das seguintes etapas:

 

1. In IIS Manager, navigate to the level of the configuration hierarchy you want to manage, and then display the SMTP E-Mail page by double-clicking the SMTP E-Mail feature. No IIS Manager, navegue até o nível da hierarquia da configuração que você deseja gerenciar e, em seguida, exibir o SMTP E-Mail página clicando duas vezes no SMTP E-Mail recurso.

 

2. On the SMTP E-Mail page, shown in the E-Mail Address text box, type the address you want to use as the default address from which e-mail messages are sent. Sobre o SMTP E-Mail página, mostrado no E-Mail texto caixa, digite o endereço que você deseja usar como padrão o endereço de e-mail a partir do qual as mensagens são enviadas.

 

3. Select the Deliver E-Mail To SMTP Server option. Selecione o Entregue e-mail para o Servidor SMTP opção.

 

4. In the SMTP Server text box, type the fully qualified domain name of the SMTP server, such as mailer5.adatum.com. Na caixa Servidor SMTP texto, digite o nome de domínio totalmente qualificado do servidor SMTP, como mailer5.adatum.com. Or select the Use Localhost check box to set the name of the SMTP server to localhost, allowing System.Net.Mail to send e-mail directly to the SMTP server on the local computer. Ou selecione a caixa Use localhost para definir o nome do servidor SMTP para localhost, permitindo System.Net.Mail para enviar e-mail diretamente ao servidor SMTP com o computador local.

 

5. In the Port text box, type the TCP port number to use to connect to the SMTP server. Na caixa Port, digite o número de porta TCP a usar para se conectar ao servidor SMTP. The standard TCP port for SMTP is 25, so this is the default and recommended setting. A porta TCP padrão para SMTP é 25, pelo que esta é a configuração padrão e recomendado.

 

6. The Authentication Settings options allow you to specify the authentication mode and credentials. A autenticação Configurações opções permitem que você especifique o modo autenticação e credenciais. If your SMTP server does not require authentication, choose Not Required. Se o seu servidor SMTP não requer autenticação, escolher Não é necessária. Otherwise, choose one of the following options: Caso contrário, escolha uma das seguintes opções:

 

• Windows Choose this to use the application identity for connecting to the SMTP server. • Windows Escolha esta opção para utilizar a aplicação identidade para a ligação ao servidor SMTP.

 

• Specify Credentials Choose this to specify a user name and password for connecting to the SMTP server. • Especifique Credenciais Escolha esta opção para especificar um nome de utilizador e password para a ligação ao servidor SMTP. Credentials are sent as clear text across the network. Credenciais são enviadas como texto claro em toda a rede. To specify credentials, click Set. Para especificar credenciais, clique em Definir. Type the user name, type and then confirm the user password, and then click OK. Digite o nome do usuário, tipo e, em seguida, confirmar o utilizador senha e, em seguida, clique em OK.

 

7. In the Actions pane, click Apply to save your settings. No painel Ações, clique em Aplicar para salvar as suas configurações.

 

You can deliver e-mail to a pickup directory by completing the following steps: Você pode emitir e-mail para um captador diretório através do preenchimento das seguintes etapas:

 

1. In IIS Manager, navigate to the level of the configuration hierarchy you want to manage, and then display the SMTP E-Mail page by double-clicking the SMTP E-Mail feature. No IIS Manager, navegue até o nível da hierarquia da configuração que você deseja gerenciar e, em seguida, exibir o SMTP E-Mail página clicando duas vezes no SMTP E-Mail recurso.

 

2. On the SMTP E-Mail page, in the E-Mail Address text box, type the address you want to use as the default address from which e-mail messages are sent. Sobre o SMTP E-Mail página, no endereço de E-Mail texto caixa, digite o endereço que você deseja usar como padrão o endereço de e-mail a partir do qual as mensagens são enviadas.

 

3. Select the Store E-Mail In Pickup Directory option, and then click Browse. Selecione a Loja E-Mail Em Pickup Diretório opção e, em seguida, clique em Procurar.

 

4. Use the Browse For Folder dialog box to specify the location of the pickup directory, and then click OK. Use o Navegar Por pasta caixa de diálogo para especificar a localização do diretório captador e, em seguida, clique em OK.

 

5. In the Actions pane, click Apply to save your settings. No painel Ações, clique em Aplicar para salvar as suas configurações.

Compartilhar este post


Link para o post
Compartilhar em outros sites

configura ele corretamente

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.