Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
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
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
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
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.
Olá xanburzum, valeu pela informação, vou dar uma analisada.
Até mais,
Xavier
configura ele corretamente
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
%>
<%
while not rs.eof
per = (100 * Cint(contador2))/Cint(NumReg) + 1
if Int(per) > Int(per2) then
per2 = per
%>
<%
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
%>
<%
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
<%
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
%>
{
<%
else
' Se chegou ao fim iremos mostrar a quantidade de e-mails que foi gerada
%>
<%
if Cint(contador) > 0 then
sqlEmp = "Select * From Empresas where CodigoEmpresa = "&empresa&""
msgBody = msgBody & HTML2 & vbcrlfSet rsEmp = conexao.execute(sqlEmp)
'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
%>
<%
else
%>
<%
end if
%>
<%
end if
%>
<%
Call fecha_conexao
Set rs = Nothing
%>