Cdosys

 Antes de realizar qualquer envio, por favor siga nossas recomendações, dessa forma evitará problemas ao enviar suas mensagens.

Caso utilize o e-mail do visitante como remetente, a mensagem pode não ser entregue ao destinatário ou sofrer atraso em todos os provedores que seguem as políticas/normas de padronização de e-mail (segundo a RFC).

O remetente (campo FROM) da mensagem deve ser obrigatoriamente um e-mail existente de seu próprio domínio e em formato válido (ex: webmaster@seudominio.com)

  • Primeiramente vamos criar os dois objetos que serão utilizados
'Cria o objeto CDOSYS
 Set objCDOSYSMail = Server.CreateObject("CDO.Message")
'Cria o objeto para configuração do SMTP
 Set objCDOSYSCon = Server.CreateObject ("CDO.Configuration")
  • Utilizando o objeto de configuração do CDOSYS, vamos definir algumas configurações que serão utilizadas em nosso Script
'Servidor SMTP que será utilizado para enviar o e-mail
 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 CDOSYS
 objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
 
 'Timeout de conexão com o Servidor SMTP
 objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 30
 objCDOSYSCon.Fields.update
 
 'Atualiza a configuração do CDOSYS para envio do e-mail
 Set objCDOSYSMail.Configuration = objCDOSYSCon
  • Agora que o arquivo de configuração do CDOSYS já está pronto, vamos configurar os dados do cabeçalho da mensagem
 'Configura o remetente do e-mail
 objCDOSYSMail.From = "email@seudominio.com"
 
 'Configura o destinatário(TO)
 objCDOSYSMail.To = "destinatario@dominio.com"
 
 'Configura o Reply-To(Responder Para) 
 objCDOSYSMail.ReplyTo = "emailDeResposta@dominio.com"
 
 'Configura o assunto(SUBJECT)
 objCDOSYSMail.Subject = "Assunto"
 
 'Configura o conteúdo da mensagem 
 objCDOSYSMail.TextBody = "teste de envio componente CDOSYS."
  • Campos Opcionais
'Configura o Cc(Com Cópia) 
 objCDOSYSMail.Cc="destinatario@dominio.com"
 
 'Configura o Bcc(Com Cópia Oculta)
 objCDOSYSMail.Bcc="destinatario@dominio.com"
 
 'Enviado um arquivo em Anexo
 objCDOSYSMail.AddAttachment "e:\home\Login_de_FTP\Nome_Do_Arquivo"
Configurando o Corpo da Mensagem
  • Existem basicamente 3 formas de preencher o corpo do e-mail que será enviado, preencha seu script com apenas uma delas
'Para enviar mensagens no formato Texto
 objCDOSYSMail.TextBody = "Corpo da mensagem em texto simples."
 
 'Para definir o charset da mensagem
 'objCDOSYSMail.BodyPart.Charset = "utf-8"
 
 'Para enviar mensagens no formato HTML
 objCDOSYSMail.HtmlBody = "<h1>Corpo da mensagem em HTML.</h1>"
 
 'Para enviar o conteúdo de uma pagina de Internet
 objCDOSYSMail.CreateMHTMLBody "http://ajuda.locaweb.com.br/"
  • Enviando o e-mail e destruindo os objetos utilizados
' ### ENVIA O E-MAIL ###
 objCDOSYSMail.Send
  • Após o envio do formulário, não podemos esquecer de destruir os objetos criados
Set objCDOSYSMail = Nothing
Set objCDOSYSCon = Nothing

Exemplo básico para o envio de e-mails com CDOSYS

Seguindo as explicações acima, vamos criar um exemplo simples para o envio de e-mails, caso deseje testa-lo verifique os campos preenchidos com endereços de e-mails, e os substitua:

Arquivo: envia.asp

<%
Set objCDOSYSMail = Server.CreateObject("CDO.Message")
Set objCDOSYSCon = Server.CreateObject ("CDO.Configuration")
 
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "localhost"
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.update 
 
Set objCDOSYSMail.Configuration = objCDOSYSCon
objCDOSYSMail.From = "Remetente@dominio.com"
objCDOSYSMail.To = "Destinatário@domínio.com"
objCDOSYSMail.Subject = "Assunto do e-mail"
objCDOSYSMail.TextBody = "Corpo da mensagem"
objCDOSYSMail.Send
 
Set objCDOSYSMail = Nothing
Set objCDOSYSCon = Nothing
response.write "<h1>Mensagem enviada com sucesso!!</h1>"
%>

Onde o visitante do site vai preencher as informações?

Ok, agora que já sabemos como o CDOSYS funciona, precisamos criar uma pagina de contato, que irá enviar os dados preenchidos pelo usuário para seu e-mail:

Arquivo: contato.html

<html>
<head>
       <title>Teste CDOSYS</title>
</head>
<body>
<form name="contato" action="envia.asp" method="post">
Nome: <input name="nome" type="text"><br />
E-mail: <input name="email" type="text"><br />
Mensagem: <input name="mensagem" type="text"><br />
<input type="submit" value="Enviar Mensagem">
</form>
</body>
</html>
  • Nós iremos receber o valor dos campos preenchidos no formulário, e armazená-los em variáveis da seguinte forma:

Arquivo: envia.asp

<%
'Repare que neste ponto estamos obtendo os valores preenchidos no formulário "contato.html"
nome = Request.Form("nome")
email = Request.Form("email")
mensagem = Request.Form("mensagem")
 
'Ao invés de preenchermos os e-mails utilizados diretamente na configuração do CDOSYS, 
'vamos guarda-los em variáveis que serão utilizadas mais à frente:
emailFrom = "Remetente@dominio.com"
emailTo = "Destinatario@domínio.com"
 
'E então Vamos montar um corpo para o e-mail que será enviado, estamos usando um formato em HTML:
corpoMensagem = "Nome: "& nome &"<br>E-Mail: "& email &"<br>Mensagem: "& mensagem
 
Set objCDOSYSMail = Server.CreateObject("CDO.Message")
Set objCDOSYSCon = Server.CreateObject ("CDO.Configuration")
 
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "localhost"
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.update 
 
Set objCDOSYSMail.Configuration = objCDOSYSCon
 
'iremos utilizar as variáveis onde estão preenchidos os e-mails do remetente e destinatário:
objCDOSYSMail.From = emailFrom
objCDOSYSMail.To = emailTo
objCDOSYSMail.Subject = "Assunto do e-mail"
 
'E aqui inserimos o corpo da mensagem, criado anteriormente:
objCDOSYSMail.HtmlBody = corpoMensagem
objCDOSYSMail.Send
 
set objCDOSYSMail = nothing
set objCDOSYSCon = nothing
response.write "<h1>Mensagem enviada com sucesso!!</h1><br>"
 
'Vamos também mostrar ao usuário para onde foi enviado o e-mail, e de onde foi enviado:
response.write "Mensagem enviada de: " & emailFrom & "<br>"
response.write "Mensagem enviada para: " & emailTo
%>
Exemplo Funcional

Segue abaixo, um exemplo funcional de formulário em CDOSYS, neste não estamos utilizando um 2º arquivo para realizar o envio do formulário como no exemplo passado acima. O código em ASP responsável por realizar o envio do e-mail é configurado no mesmo arquivo, porém só é executado se for passado uma certa condição para o script em ASP, como veremos à frente:

Arquivo: contato.asp

Exemplo Autenticado

Segue abaixo, um exemplo funcional de um script que efetua o envio de mensagens de forma autenticada:

Arquivo: envia.asp

Ainda não é possível efetuar o envio de forma autenticada utilizando contas de email do Exchange da locaweb devido o componente Cdosys não suportar o envio via TLS

Aproveite e conheça outros produtos da Locaweb, como o Cloud Hosting, clique aqui e saiba mais!

Atualizado em 31 de julho de 2019

Este artigo foi útil ?

Artigos relacionados