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!

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
Responder comentário
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 %&*$$#@!!!!!!!!!
Responder comentário
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?

PAULINO, BOA TARDE.
EU TENHO QUE DEFINIR O NOME DO SERVIDOR. NESTE CASO, NÃO SERIA APLICAÇÃO DIRECIONADA CERTO?
Os textos publicados neste espaço são de responsabilidade única de seus autores (colunistas e leitores) e podem não expressar necessariamente a opinião do iMasters.
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.