Treinamento Online
Segunda-feira, 19 de julho de 2004 às 01h59

Enviando Emails no VFP com o componente JMail

Faltam -1 dias! Inscreva-se agora! O maior encontro de profissionais web da américa latina.

Caros colegas, nesta matéria vamos interromper um pouco a sequência sobre as novidades do Visual FoxPro 9.0 Beta e vamos falar sobre um assunto que sempre tem ressurgido nas listas de discussão sobre VFP. Vamos falar sobre o envio de emails através do VFP.

Enviando Emails no VFP com o componente JMail

Existem várias formas de enviar emails com o VFP. Podemos utilizar as classes IMAPI do Windows ou mesmo o Outlook. Nesta edição da coluna, vamos utilizar um componente Freeware chamado W3 JMail.

Primeiro, é necessário fazer o download do componente e instalá-lo no computador para que o mesmo venha estar disponível para programação no Visual FoxPro.

Você poderá baixá-lo a partir de http://dimac.net/FreeDownloads/FreeDownloadsstart.asp.

Após baixá-lo, execute o instalador e deixe-o instalar o componente em sua máquina.

Agora que o componente está instalado podemos fazer uso da classe JMail.Message do componente que é responsável por todo o tratamento do que diz respeito à formação da mensagem e envio através de um servidor SMTP.

No Visual FoxPro iremos criar um formulário com os campos Para (To), Assunto (Subject) e Corpo da Mensagem (Body).

Na janela de comandos do Visual FoxPro digite:

CREATE FORM Mensagem AS Form DEFAULT

Com este comando garantiremos que o novo formulário se derivará da classe básica de formulários do Visual FoxPro.


Figura 1 - Formulário mensagem vazio, sem controles

Agora vamos adicionar alguns controles ao formulário.

01. Adicione dois controles TextBox e três controles Label ao formulário.

02. Adicione um controle EditBox.

03. Adicione um controle CommandButton.

Agora nomeie os controles da seguinte forma:

Primeiro TextBox: txtPara
Segundo TextBox: txtAssunto
EditBox: edtMensagem
CommandButton: cmdEnviar

Agora formate o formulário mudando os Labels e o caption do botão cmdEnviar, altere também o tamanho dos controles para ficarem conforme a figura 2:

Até o momento nosso formulário já tomou a forma básica de um cliente para envio de mensagens mas ainda não possui nenhum funcionalidade.

Todo o código funcional para instanciar a classe JMail.Message, ler os dados dos controles e enviá-los através do provedor de acesso a internet estará encapsulado no evento click do botão Enviar.

Adicione o seguinte código ao evento click do botão enviar:



No código acima temos alguns trechos que precisam ser comentados, para trazer maior clareza do que está acontecendo:

LOCAL oMsg AS Object
oMsg = CREATEOBJECT("JMail.Message")

No trecho acima declaramos uma variável oMsg como objeto e em seguita instanciamos o objeto JMail.Message.

* Fica em silêncio se ocorrer algum erro
oMsg.Silent = .T.

No trecho acima dizemos ao bojeto oMsg para ficar em silêncio caso ocorra algum erro. Isto impedirá mensagens indesejadas na tela do usuário.

* Informar qual o email que está enviando
oMsg.From = "paulino@foxbrasil.com.br"

Acima estamos definindo qual será o email remetente da mensagem.

* Ler o email do destinatário e adiciona
* o email à lista de recipientes da mensagem
oMsg.AddRecipient(Thisform.txtPara.Value)

No trecho acima pegamos o email do destinatário no txtPara do nosso formulário.

* Ler o assunto da mensagem
oMsg.Subject = Thisform.txtAssunto.Value

Acima lemos o assunto da mensagem.

* Adiciona mensagem em formato HTML
oMsg.AppendHTML("<HTML><BODY>"+;
         [<font face="Verdana, Arial, Helvetica,]+;
         [ sans-serif" size="2">] +;
         STRTRAN(Thisform.edtMensagem.Value,;
         CHR(13)+CHR(10),"<br>") + ;
         [</font>] +;
         "</BODY></HTML>")

No trecho acima usamos o método AppendHTML do nosso bojeto oMsg para formatar o corpo do email, somando-se algumas TAG's HTML.

* Usuário P/ autenticar na hora do envio:
oMsg.MailServerUserName ;
         = "testejmail@foxtotal.com.br"
* Senha p/ autenticar na hora do envio:
oMsg.MailServerPassWord = "teste"

Acima definimos qual será a conta e senha para autenticar a saída no SMTP. Este recurso é imprescindível hoje em dia já que a maioria dos provedores exibe que haja uma autenticação antes do envio.

* Envia a mensagem
IF oMsg.Send("mail.foxtotal.com.br") THEN
         MESSAGEBOX("Mensagem enviada!",0+64,;
         "Envio completo")

No Trecho acima testamos se houve sucesso no envio da mensagem através do método Send. Se houve um valor verdadeiro (.T.) é retornado. Caso contrário um valor falso (.F.) é retornado.

MESSAGEBOX("Ocorreu um erro no envio:"+;
         CHR(13)+STR(oMsg.ErrorCode) + ;
         CHR(13)+oMsg.ErrorMessage,0+16,;
         "Erro no envio")

Acima exibimos uma mensagem ao usuário caso algum erro tenha ocorrido no momento do envio.

Muito bem, agora podemos executar nosso formulário de envio de emails e verificar como funciona!


Figura 3 - Enviando o email através do formulário no VFP

E finalmente para mostrar que realmente funciona, a mensagem lida através do Outlook na conta suporte@foxtotal.com.br:


Figura 4 - Email recebido no Outlook.

É isso aí! Espero que aproveitem bem a dica.

Para fazer download do formulário já pronto, clique aqui.

Só queria lembrá-los que a Conferência Nacional de Desenvolvedores VFP está chegando! Já foi marcada para 29 a 31 de outubro de 2004 e será realizada em São Paulo-SP. Fiquem atentos às novidades pois as vagas serão limitadíssimas!

Semana que vem tem mais!

Até a próxima coluna!

4 comentários

 Vagner Magalhaes de Oliveira
06/08/2004 13h57

Anexo no email

Parabêns pela materia e de grande ajuda para o meu dia a dia mas gostaria de saber se tem como anexar um arquivo no email desde já agradeço , um abraço

 Arlino Henrique
14/08/2004 18h16

Linguagem obsoleta

Essa linguagem é obsoleta sim, não adiante os fãs tentarem de vendder. Não há quem, em pefeito estado de conciencia, se arrisque a construir um sistema de porte medio ou grande com FoxPro. Resumindo: linguagem %&*$$#@!!!!!!!!!

 dancasfar
17/08/2004 15h50

ARCHIVOS ADJUNTOS

Espero que me etiendas. Soy de Peru. Fue muy interesante el desarrollo de enviar email atraves de foxpro con componente JMAIL.

Quisiera que me expliques como adicionar archivos adjuntos.

ES posible haciendo uso de Foxpro descargar archivos adjuntos y leer correos de Oulook Express. me podrias explicar como?

 Sérgio da Silva Oliveira
24/08/2005 11h49

ENVIO

PAULINO, BOA TARDE.
EU TENHO QUE DEFINIR O NOME DO SERVIDOR. NESTE CASO, NÃO SERIA APLICAÇÃO DIRECIONADA CERTO?

Cancelar resposta

Qual a sua opinião?

Faça login abaixo ou cadastre-se rapidamente.


Patrocínio:
Sobre o Autor
Nilton Paulino é sócio da Fox Total Network, um dos organizadores e mantenedores do Grupo FoxBrasil, desenvolvedor de software e consultor. Também utiliza diversas outras ferramentas para complementar seu desenvolvimento como Visual Studio.NET, SQL Server, Oracle, dentre outras.

2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.