Ir para conteúdo

POWERED BY:

Arquivado

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

marina limeira

CDOSYS - envio de 2 emails e registro simultaneo

Recommended Posts

ola amigos

 

sou meia basica em ASP, alguem teria um exemplo onde:

 

quanto preenchesse o cadastro no site, eu recebo um email com estes dados, o usuario que cadastrou recebe outro email com uma carta com texto personalizada com o nome dele, e ainda armazenar estes dados do formulario num banco de dados access simples e basico mesmo.

 

alguem tem um exemplo ?

 

obrigada

Compartilhar este post


Link para o post
Compartilhar em outros sites

assim como queres é dificil é 1 em 300, mais tem é claro o que você tem que fazer é o seguinte:

 

1 codigo de envio de e-mail com cópia pra você, outro codigo de envio para o usuário (o mesmo que o primeiro) a diferença é que terá um HTML configurado de acordo com a tal carta, e em seguida um INSERT, mais até onde sabe de ASP, pelo menos sabe fazer um INSERT?

Compartilhar este post


Link para o post
Compartilhar em outros sites

uso este formulario para envio de mails

 

o que faltaria incluir?

 

CODE

<%@ LANGUAGE="VBScript" %>

<%

'- Inicio da secao de Customizacao !. -----------

referers = Array("www.site.com.br", "site.com.br")

mailComp = "CDOSYS"

smtpServer = "200.200.200.200"

fromAddr = "SITE <servidor@site.com.br>"

solicitante_email = ""

recipients = "email@site.com"

'- Final da secao de customizacao . -------------------------------------

 

 

Response.Buffer = true

errorMsgs = Array()

'Checando os dados do formulario

if Request.ServerVariables("Content_Length") = 0 then

call AddErrorMsg("Nenhum dado foi fornecido.")

end if

 

 

'Check if referer is allowed.

 

validReferer = false

referer = GetHost(Request.ServerVariables("HTTP_REFERER"))

for each host in referers

if host = referer then

validReferer = true

end if

next

if not validReferer then

if referer = "" then

call AddErrorMsg("Não há referencia.")

else

call AddErrorMsg("Dominio não Permitido ! '" & referer & "'.")

end if

end if

 

 

 

'Checando campos

 

' if Request.Form("solicitante_email") = "" then

' call AddErrorMsg("Faltou informação no formulario....")

' end if

 

'Checando email addresses.

 

' recipients = Split(Request.Form("solicitante_email"), ",")

' for each name in recipients

' name = Trim(name)

' if not IsValidEmail(name) then

' call AddErrorMsg("Email invalido foi digitado : " & name & ".")

' end if

' next

 

 

'Get replyTo email address from specified field if given and check it.

 

name = Trim(Request.Form("_replyToField"))

if name <> "" then

replyTo = Request.Form(name)

else

replyTo = Request.Form("_replyTo")

end if

if replyTo <> "" then

if not IsValidEmail(replyTo) then

call AddErrorMsg("Invalid email address in reply-to field: " & replyTo & ".")

end if

end if

 

 

 

'Get subject text.

 

subject = Request.Form("_subject")

 

'If required fields are specified, check for them.

 

if Request.Form("_requerCampos") <> "" then

required = Split(Request.Form("_requerCampos"), ",")

for each name in required

name = Trim(name)

if Left(name, 1) <> "_" and Request.Form(name) = "" then

call AddErrorMsg("Faltou informação no campo: " & name)

end if

next

end if

 

 

'If a field order was given, use it. Otherwise use the order the fields were

'received in.

 

str = ""

if Request.Form("_fieldOrder") <> "" then

fieldOrder = Split(Request.Form("_fieldOrder"), ",")

for each name in fieldOrder

if str <> "" then

str = str & ","

end if

str = str & Trim(name)

next

fieldOrder = Split(str, ",")

else

fieldOrder = FormFieldList()

end if

 

 

'If there were no errors, build the email note and send it.

 

if UBound(errorMsgs) < 0 then

 

 

'Build table of form fields and values.

 

body = "<table border=0 cellpadding=2 cellspacing=0>" & vbCrLf

for each name in fieldOrder

body = body _

& "<tr valign=top>" _

& "<td><font face=""Arial,Helvetica"" size=2><b>" _

& name _

& ": </b></font></td>" _

& "<td><font face=""Arial,Helvetica"" size=2>" _

& Request.Form(name) _

& "</font></td>" _

& "</tr>" & vbCrLf

next

body = body </table>" & vbCrLf

 

 

 

'Add a table with any environmental variables.

 

if Request.Form("_envars") <> "" then

 

 

body = body _

& "<p>" _

 

& "<table border=0 cellpadding=2 cellspacing=0>" & vbCrLf

envars = Split(Request.Form("_envars"), ",")

for each name in envars

name = Trim(name)

body = body _

& "<tr valign=top>" _

& "<td><font face=""Arial,Helvetica"" size=2><b>" _

& name _

& ": </b></font></td>" _

& "<td><font face=""Arial,Helvetica"" size=2>" _

& Request.ServerVariables(name) _

& "</font></td>" _

& "</tr>" & vbCrLf

next

body = body & "Protocolo" & "</table>" & vbCrLf

end if

 

 

 

'Send it.

 

str = SendMail()

if str <> "" then

AddErrorMsg(str)

end if

 

'Redirect if a URL was given.

 

if Request.Form("_redirect") <> "" then

Response.Redirect(Request.Form("_redirect"))

end if

 

end if %>

 

 

 

 

<html>

<head>

<title>Form Mail</title>

</head>

<body bgcolor="#ffffff">

 

 

 

<% if UBound(errorMsgs) >= 0 then %>

<table border=0><tr><td><font color="#cc0000" face="Arial,Helvetica" size=2><b>

Formulário não pode ser processado devido aos seguintes erros:

<p>

<ul>

<% for each msg in errorMsgs %>

<li><% = msg %>

<% next %>

</b></font></td></tr></table>

<% else %>

<table bgcolor="#000000" border=0 cellpadding=1 cellspacing=0 width=450><tr><td>

<table border=0 cellpadding=4 cellspacing=1 width="100%">

<tr bgcolor="#cccccc" valign=bottom>

<th colspan=2><font face="Arial,Helvetica" size=2>

Obrigado, As informações abaixo foram enviadas com sucesso !

<br>

 

 

</font></th>

</tr>

<% for each name in fieldOrder %>

<tr bgcolor="#ffffff" valign=top>

<td><font face="Arial,Helvetica" size=2><b><% = name %> </b></font></td>

<td><font face="Arial,Helvetica" size=2><% = Request.Form(name) %> </font></td>

</tr>

<% next %>

 

 

 

</table>

</td></tr></table>

 

 

<% end if %>

<p>

<a href="<% = Request.ServerVariables("HTTP_REFERER") %>">RETORNAR</a>

</center>

 

</font>

</body>

</html>

 

 

 

<% '---------------------------------------------------------------------------

' Subroutines and functions.

'---------------------------------------------------------------------------

 

sub AddErrorMsg(msg)

 

dim n

 

'Add an error message to the list.

 

n = UBound(errorMsgs)

Redim Preserve errorMsgs(n + 1)

errorMsgs(n + 1) = msg

 

end sub

 

function GetHost(url)

 

Dim i, s

 

GetHost = ""

 

'Strip down to host or IP address and port number, if any.

 

if Left(url, 7) = "http://" then

s = Mid(url, 8)

elseif Left(url, 8) = "https://" then

s = Mid(url, 9)

end if

i = InStr(s, "/")

if i > 1 then

s = Mid(s, 1, i - 1)

end if

 

getHost = s

 

end function

 

function IsValidEmail(email)

 

dim names, name, i, c

 

'Check for valid syntax in an email address.

 

IsValidEmail = true

names = Split(email, "@")

if UBound(names) <> 1 then

IsValidEmail = false

exit function

end if

for each name in names

if Len(name) <= 0 then

IsValidEmail = false

exit function

end if

for i = 1 to Len(name)

c = Lcase(Mid(name, i, 1))

if InStr("abcdefghijklmnopqrstuvwxyz_-.", c) <= 0 and not IsNumeric© then

IsValidEmail = false

exit function

end if

next

if Left(name, 1) = "." or Right(name, 1) = "." then

IsValidEmail = false

exit function

end if

next

if InStr(names(1), ".") <= 0 then

IsValidEmail = false

exit function

end if

i = Len(names(1)) - InStrRev(names(1), ".")

if i <> 2 and i <> 3 then

IsValidEmail = false

exit function

end if

if InStr(email, "..") > 0 then

IsValidEmail = false

end if

 

end function

 

function FormFieldList()

 

dim str, i, name

 

'Build an array of form field names ordered as they were received.

 

str = ""

for i = 1 to Request.Form.Count

for each name in Request.Form

if Left(name, 1) <> "_" and Request.Form(name) is Request.Form(i) then

if str <> "" then

str = str & ","

end if

str = str & name

exit for

end if

next

next

FormFieldList = Split(str, ",")

 

end function

 

function SendMail()

 

dim mailObj

dim addrList

 

'Send email based on mail component. Uses global variables for parameters

'because there are so many.

 

SendMail = ""

 

 

 

 

 

 

 

 

'Send email (CDOSYS)

 

if mailComp = "CDOSYS" then

 

'## configurações do componente CDOSYS

set mailObj = Server.CreateObject("CDO.Message")

 

'Cria o objeto para configuração do SMTP

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

 

'SMTP

objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "localhost"

 

'Porta do SMTP

objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport")= 25

 

'Porta do CDO

objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

 

'Timeout

objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 30

objCDOSYSCon.Fields.update

 

'Atualiza a configuração do CDOSYS para o envio do e-mail

Set mailObj.Configuration = objCDOSYSCon

 

 

mailObj.From = fromAddr

mailObj.To = recipients

MailObj.Bcc = "email_backup@site.com"

mailObj.Subject = subject

mailObj.htmlBody = body

' mailObj.textBody = body

mailObj.Send

 

 

' Response.Write(" Email enviado com sucesso! ")

' ### DESTRÓI OS OBJETOS ###

' Set mailObj = Nothing

' Set objCDOSYSCon = Nothing

' response.write "Mensagem acentuada enviada para: "&recipients&"..."

end if

end function %>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

claro que a ideia é essa ted, olhei seu blog é muito util parabens

mas tentei adaptar o codigo q enviei e nao funcionou...

tem como inserir no banco todos os campos do formulario, claro que o banco ja esta de acordo com os nomes dos campos do formulario.. mas nao preciso relatar no codigo correto?

 

alguem tem alguma ideia como implementar???

 

 

bjs

marina

Compartilhar este post


Link para o post
Compartilhar em outros sites

pensa um pouco, vamos lá, vou mastigar um pouco para você ficar praticando!!

 

o codigo do envio de email

 

envia o email para o usuario

envia o email para você com cópia no mesmo codigo

depois cadastra

 

assim OBS, é só um exemplo....

<%
'''''''''''''''''''' envia para o usuario e para você '''''''''''''''''''''
MsgHtml = "...... corpo em HTML da mensagem .................."
					
	Sch = "www.schemas.microsoft.com/cdo/configuration/"

	Set TedkConfig = Server.CreateObject("CDO.Configuration")
		TedkConfig.Fields.Item(Sch & "sendusing") = 2
		TedkConfig.Fields.Item(Sch & "smtpauthenticate") = 1
		TedkConfig.Fields.Item(Sch & "smtpserver") = "smtp.dominio.com.br"
		TedkConfig.Fields.Item(Sch & "sendusername") = "contato=dominio.com.br"
		TedkConfig.Fields.Item(Sch & "sendpassword") = "contatosenha"
		TedkConfig.Fields.Update

	Set TedkMessage = Server.CreateObject("CDO.Message")
	Set TedkMessage.Configuration = TedkConfig
		TedkMessage.From = ".......email......."
		TedkMessage.To = ".......email......."
		TedkMessage.BCC = ".......email com cópia para você......."
		TedkMessage.Subject = "Assunto"
		TedkMessage.ReplyTo = Email
		TedkMessage.HTMLBody = MsgHtml

	If MsgHtml <> "" Then : TedkMessage.AutoGenerateTextBody = False : TedkMessage.TextBody = MsgHtml : End If	

		Erro = ""
		Sucesso = False

	On Error Resume Next
		TedkMessage.Send

		Set TedkMessage = Nothing
		Set TedkConfig = Nothing

	If Err <> 0 Then : Erro = Err.Description : Else : Sucesso = True : End If
	
	
'''''''''''''''''''' cadastra no banco '''''''''''''''''''''
Coo.Execute("Insert Into .................")
%>

os campos do formulário você adapita de acordo com sua necessidade!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

oi o seu script é semelhante ao meu

so nao entendi como enviar um email diferente para o usuario e os dados pra mim?

e como registrar os dados no database.. insert.. etc. tranquilo.. mas simultaneo nao deu certo

Compartilhar este post


Link para o post
Compartilhar em outros sites

ah lembrando que nao é o mesmo conteudo que sera enviado pro visitante ne

 

o visitante vai receber um texto html

 

e eu que recebo os dados do formulario e registra no banco access local

Compartilhar este post


Link para o post
Compartilhar em outros sites

<%

sub enviarEmail(smtp,remetente,emailremetente,destinatario,emaildestinatario,assunto,texto)

dim iMsg, iConf, Flds

Const cdoSendUsingPort = 2

 

set iMsg = CreateObject("CDO.Message")

set iConf = CreateObject("CDO.Configuration")

 

set Flds = iConf.Fields

 

with Flds

.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort

.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = smtp

.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 10

.Update

end With

 

with iMsg

set .Configuration = iConf

.To = destinatario & "<" & emaildestinatario & ">"

.From = remetente & "<" & emailremetente & ">"

.Subject = assunto

.HtmlBody = texto

.Send

end with

 

set iMsg = nothing

set iConf = nothing

set Flds = nothing

end sub

 

 

' ----------------

' DADOS PARA ENVIO

' ----------------

smtpServer = "200.200.200.200"

nmsite = "Site"

emailsite = "servidor@site.com.br"

nmusuario = Request.Form("nmusuario")

emailusuario = Request.Form("emailusuario")

 

' -----------------------

' ENVIA E-MAIL AO USUÁRIO

' -----------------------

assunto = "Contato"

texto = "Aqui vem o corpo do e-mail para o usuário"

 

call enviarEmail(smtpServer,nmsite,emailsite,nmusuario,emailusuario,assunto,texto)

 

' --------------------

' ENVIA E-MAIL AO SITE

' --------------------

assunto = Request.Form("_subject")

texto = "Aqui vem o corpo do e-mail para o site"

 

call enviarEmail(smtpServer,nmusuario,emailusuario,nmsite,emailsite,assunto,texto)

%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

oi hargon

implementei o seu codigo

so que nao consegue adicionar no banco de dados

 

e mesmo tirando a parte de banco de dados ocorre um erro: error '8004020f' bem qdo manda o segundo email.

 

conhece este erro?

 

obrigada

 

Marina

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sobre cadastrar no banco é só incluir o código antes ou depois do código de enviar o e-mail.

 

A respeito do domínio externo, tem servidores que exigem pelo menos um dos e-mails seja do próprio domínio onde está hospedado a página.

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao hargon

 

estou desesperada pra resolver isso.. o q to tentando ...

 

.send que ocorre o erro...

nao é possivel enviar 2 ou mais emails sem ser conta presente no servidor win2003 que usa CDOSYS

 

mas imagina que preciso que o formulario dispare varios emails...

 

como contornar este erro.. buscando na net vejo que muuita gente passa pelo mesmo problema, principalmente quem precisa que ambos (visitante e dono do site) preciserm receber resposta por email apos preenchimento de formularios.

 

 

socorro.. help..

 

Mari

Compartilhar este post


Link para o post
Compartilhar em outros sites

este erro

 

é uma constancia: error '80040211'

 

 

copio, mudo.. e nada

 

sera que estou sendo clara, pois parece que mudo aqui e nao funciona...

 

ja montei um script do zero, usei 3 diferentes que peguei, adaptei

 

 

heeelp

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acrescenta aquela linha de autenticação do código do Ted k', talvez resolva seu problema.

 

No CDOSYS é possível fazer isso sim. Em todos os sites que desenvolvo, o formulario de contato envia um e-mail para o usuário e para o responsável pelo site.

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual linha de autenticacao? com usuario e senha do servidor smtp? ja testei e nada

tentei ate usar um servidor do terra com user e senha e nada tabemm (usando conta de la claro)

 

mas como estou fazendo e refazendo seu script querido e nao vai . insiste no erro error '80040211'

 

voce nao tem um que você utiliza e funciona?

 

nao to tendo sucesso

 

me ajudaaaaa

 

 

Mari

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu utilizo o script que postei.

 

Você já tentou informar no SMTP apenas "127.0.0.1" ?

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.