ASP - Usando O componente AspEmail
No artigo - Emails , emails , emails... - eu abordei como usar o componente ASPMail no Visual Basic (ainda não conclui o artigo...), vamos agora aprender a implementar uma funcionalidade fundamental em nossas aplicações ASP . Veremos com enviar um e-mail a partir de uma aplicação ASP.
A ASP não prove esta funcionalidade , ou seja , não existe em ASP um objeto que podemos utilizar para enviar e-mails. Teremos que usar um componente de terceiros que forneça esta funcionalidade e preencha esta lacuna. Na verdade esta é mais uma das facilidades que temos ao usar ASP , se precisamos realizar alguma tarefa que em ASP é impossível podemos obter ou até mesmo construir um componente e usá-lo com ASP.
O que torna isto possível é a arquitetura COM Component Object Model . Podemos então escrever um componente usando C++ ou Visual Basic , etc.., e usá-lo com ASP para agregar mais funções a linguagem.
Para suprir a nossa necessidade de enviar um e-mail com ASP vamos usar o componente Aspemail , ele é gratuíto e pode ser encontrado em www.aspemail.com . Após fazer o download basta instalá-lo em nosso servidor Web. A função do componente Aspemail será basicamente se conectar a um servidor SMTP (Simple Mail Transfer Protocol) e solicitar o envio de um e-mail.
Para instalar o componente basta clicar duas vezes sobre o arquivo aspemail seguir as orientações durante a instalação e a seguir registrar o arquivo aspemail.dll usando o arquivo regsvr32.exe que esta presente no diretório c:\windows\system do windows. Basta digitar em iniciar=>executar , a seguinte linha: regsvr32 c:\aspemail\bin\aspemail.dll (supondo que você tenha instalado o componente em c:\aspemail)
Descrevendo o componente AspEmail
Para usar o componente Aspemail instalado em nossas aplicações ASP devemos criar uma instância do objeto AspEmail em nosso script , isto é feito da seguinte forma:
<%
...
Set Mail =
Server.CreateObject("Persits.MailSender")
...
%>
A instrução acima cria uma variável objeto do tipo Aspemail que possui propriedades que podemos usar para enviar um e-mail através de um servidor SMTP. As principais propriedades usadas para o envio de um e-mail são:
Exemplo: Mail.Host = "smtp.mycompany.com"
Podemos usar uma relação de servidores separados por ponto e vírgula (;) , se o primeiro falhar o componente irá tentar usar o segundo e assim por diante:
Exemplo:
Mail.Host ="smtp.mycompany.com;smtp2.mycompany.com;host.company.com"
Exemplo: Mail.From = "vendas@mycompany.com"
Exemplo: Mail.FromName = "JcmSoft Software"
Exemplo: Mail.AddAddress "jsmith@company1.com", "John Smith"
Exemplo: Mail.Subject = "Este é o titulo da mensagem"
Exemplo:
Mail.Body = "Querida Jessica:" & chr(13) & chr(10) & "Obrigado pelos bons negócios . Seu gerente de vendas"
Ou no formato HTML
Mail.Body = "<HTML><BODY BGCOLOR=#0000FF>Querida Janice:....</BODY></HTML>"
Mail.IsHTML = True
Exemplo:
On Error Resume Next
Mail.Send
If Err <> 0 Then
Response.Write "Ocorreu o seguinte erro: " & Err.Description
End If
Exemplo: Mail.AddAttachment "c:\dir\arquivo.doc"
Usando o componente AspEmail
Vamos mostrar como usar o componente para enviar um e-mail a partir de nosso script ASP. Em muitos sites na Web existe um recurso que torna possível ao usuário recomendar o site que esta visitando ou enviar algum texto do site a um amigo. Isto funciona como propaganda para o site e é fácil de ser implementado.
Um exemplo do uso deste recurso esta no site da UOL . Ao ler uma notícia você pode enviá-la a alguém por e-mail com um clique de mouse . Veja a seguir:
Ao clicar no ícone com o texto "Mande este texto por e-mail" , surge um formulário onde o usuário informa os dados para o envio do texto anexo ao e-mail. Veja abaixo:
Para implementar tal recurso em seus scripts ASP , basta usar um formulário para coletar os dados referente ao ao texto do e-mail que deverá ser enviado e usar o componente AspEmail para enviar o e-mail.
Nosso exemplo será composto de um único arquivo: Envia_Email.asp
O código do arquivo Envia_Email.asp é dado a seguir:
<H3>Enviando um e-mail com o
componente AspEmail</H3> <% Dim Mail ' objeto Email Dim strFromName ' nome do remetente Dim strFromEmail ' endereço de Email do remetente Dim strToEmail ' endereço do destinatario Dim strSubject, strBody 'corpo da mensagem Dim strThisPage ' o endereco do seu site Dim strReferringPage ' a referencia URL Dim bValidInput ' variável Booleana usada na validação Dim strhost ' nome do servidor ' Retorna o nome do arquivo de script e a url da pagina strThisPage = Request.ServerVariables("SCRIPT_NAME") strReferringPage = Request.ServerVariables("HTTP_REFERER") 'define os valores iniciais dos parametros usados em nossa mensagem strhost = "mail.riopreto.com.br" altere o nome para o seu servidor de mensagens strFromName = Trim(Request.Form("txtFromName")) strFromEmail = Trim(Request.Form("txtFromEmail")) strToEmail = Trim(Request.Form("txtToEmail")) strSubject = "Site sobre Visual Basic" strBody = Trim(Request.Form("txtMessage")) 'monta o corpo da mensagem strBody = "" strBody = strBody & "Achei um site que tem tudo sobre Visual Basic , dê uma olha em :" & vbCrLf strBody = strBody & vbCrLf strBody = strBody & " http://www.geocities.com/SiliconValley/Bay/3994 " & vbCrLf ' validacao dos dados bValida_Entrada = True bValida_Entrada = bValida_Entrada And strFromName <> "" bValida_Entrada = bValida_Entrada And Valida_Email(strFromEmail) bValida_Entrada = bValida_Entrada And Valida_Email(strToEmail) 'Se o e-mail é valido envia a mensagem If bValida_Entrada Then Set Mail = Server.CreateObject("Persits.MailSender") Mail.Host = strHost Mail.From = strFromEmail Mail.FromName = strFromName Mail.AddAddress strToEmail Mail.Subject = strSubject Mail.Body = strBody on error resume next Mail.Send mensagem_erro = "" if err <> 0 then mensagem_erro = "Ocorreu o seguinte erro durante o envio do e-mail: " & Err.description end if Set Mail = Nothing on error goto 0 ' exibe mensagem de agradecimento %> <P><b>Sua mensagem foi enviada. Obrigado por ter visitado nosso site , volte sempre !</P></b> <% Else If "http://" & Request.ServerVariables("HTTP_HOST") & strThisPage = strReferringPage Then Response.Write "Ocorreu um erro . Verifique suas informações: " & "<BR>" & vbCrLf End If ' exibe o formulario... Exibe_Formulario strThisPage, strFromName, strFromEmail, strToEmail, strBody End If %> <% 'verifica se o e-mail é valido Function Valida_Email(strEmail) Dim bIsValid bIsValid = True If Len(strEmail) < 5 Then bIsValid = False Else If Instr(1, strEmail, " ") <> 0 Then bIsValid = False Else If InStr(1, strEmail, "@", 1) < 2 Then bIsValid = False Else If InStrRev(strEmail, ".") < InStr(1, strEmail, "@", 1) + 2 Then bIsValid = False End If End If End If End If Valida_Email = bIsValid End Function %> <% Sub Exibe_Formulario(strPageName, strFromName, strFromEmail, strToEmail, strBody) %> <html> <body bgcolor=aqua> <FORM ACTION="<%= strPageName %>" METHOD="post" name=frmReferral> <TABLE BORDER="0"> <TR> <TD VALIGN="top" ALIGN="right"><STRONG>Seu Nome:</STRONG></TD> <TD><INPUT TYPE="text" NAME="txtFromName" VALUE="<%= strFromName %>" SIZE="30"></TD> </TR> <TR> <TD VALIGN="top" ALIGN="right"><STRONG>E-mail do Remetente :</STRONG></TD> <TD><INPUT TYPE="text" NAME="txtFromEmail" VALUE="<%= strFromEmail %>" SIZE="50"></TD> </TR> <TR> <TD VALIGN="top" ALIGN="right"><STRONG>E-mail do destinatário:</STRONG></TD> <TD><INPUT TYPE="text" NAME="txtToEmail" VALUE="<%= strToEmail %>" SIZE="50"></TD> </TR> <TR> <TD VALIGN="top" ALIGN="right"><STRONG>Mensagem:</STRONG></TD> <TD><TEXTAREA NAME="txtMessage" COLS="50" ROWS="5" WRAP="virtual" READONLY><%= strBody %></TEXTAREA></TR> <TR> <TD></TD> <TD><INPUT TYPE="reset" VALUE="Limpar Formulário" name=rstReferral> <INPUT TYPE="submit" VALUE="Enviar E-mail" name=subReferral></TD> </TR> </TABLE> </FORM> </body> </html> <% End Sub %> |
Vejamos os pontos principais do código acima:
a-) As variáveis definidas são preenchidas com os valores dos campos do formulário
strhost = "mail.riopreto.com.br"
altere o nome para o seu servidor de mensagens strFromName = Trim(Request.Form("txtFromName")) strFromEmail = Trim(Request.Form("txtFromEmail")) strToEmail = Trim(Request.Form("txtToEmail")) strSubject = "Site sobre Visual Basic" strBody = Trim(Request.Form("txtMessage")) |
b-) Se o e-mail for valido criamos uma instância do objeto Aspmail e definimos as propriedades do objeto necessárias para enviar o e-mail. Verificamos também se ocorreu algum erro , e se tudo deu certo enviamos o e-mail.
If bValida_Entrada Then Set Mail = Server.CreateObject("Persits.MailSender") Mail.Host = strHost Mail.From = strFromEmail Mail.FromName = strFromName Mail.AddAddress strToEmail Mail.Subject = strSubject Mail.Body = strBody on error resume next Mail.Send mensagem_erro = "" if err <> 0 then mensagem_erro = "Ocorreu o seguinte erro durante o envio do e-mail: " & Err.description end if |
c-) Exibe a mensagem de erro e mostra o formulário
If "http://" &
Request.ServerVariables("HTTP_HOST") &
strThisPage = strReferringPage Then Response.Write "Ocorreu um erro . Verifique suas informações: " & "<BR>" & vbCrLf End If ' exibe o formulario... Exibe_Formulario strThisPage, strFromName, strFromEmail, strToEmail, strBody |
d-) Função usada para validar o e-mail
Function Valida_Email(strEmail) Dim bIsValid bIsValid = True If Len(strEmail) < 5 Then bIsValid = False Else If Instr(1, strEmail, " ") <> 0 Then bIsValid = False Else If InStr(1, strEmail, "@", 1) < 2 Then bIsValid = False Else If InStrRev(strEmail, ".") < InStr(1, strEmail, "@", 1) + 2 Then bIsValid = False End If End If End If End If Valida_Email = bIsValid End Function |
O formulário gerado pelo código Envia_Email.asp e exibido a seguir:
2-) Na figura abaixo temos a mensagem informando que o e-mail foi enviado.
Deu para perceber que é muito fácil implementar o envio de e-mail em ASP . Assim ocorre com outros serviços que podemos agregar aos scripts ASP aumentando o seu poder.
Podemos usar os dados armazenados em um banco de dados uma tabela de clientes para enviar e-mails para nossos clientes a partir de um banco de dados. Pense nisto...
José Carlos Macoratti