- 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"
- Para mais informações sobre como enviar um arquivo em anexo, acesse o artigo:Envio de e-mails com anexo – Cdosys.
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>" %>
- 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:
<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:
<% '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