Full text
Processando o Saber nº 3, 2011 82 COMUNICAÇÃO SMTP EM APLICAÇÕES GENEXUS – UM COMPARATIVO ENTRE A LINGUAGEM NATIVA E A NÃO NATIVA NICOLAU, Vandré Felipe de Oliveira, Especialista* * Faculdade de Tecnologia de Praia Grande CEETEPS - Centro Estadual de Educação Tecnológica Paula Souza Pça. 19 de Janeiro, 144, Boqueirão, Praia Grande / SP, CEP: 11700-100 Fone (13) 3591-1303 vandrefelip[email protected] OLIVEIRA, Douglas Hamilton, Mestre** ** Faculdade de Tecnologia de Americana Rua Emílio de Menezes, s/nº, Vila Amorim, Americana / SP, CEP: 13469-111 Fone (19) 3406-3297 / 3406-5776 profdouglasoliv[email protected] RESUMO O artigo visa demonstrar a comunicação de aplicações GENEXUS com servidores de utilizando o protocolo SMPT que é responsável pelo envio de mensagens de correio eletrônico, para isso serão comentados duas formas de envio: a forma nativa do GENEXUS com a utilização de variáveis que, na verdade, são objetos instanciados de outra forma usando linguagem externa não nativa que, no caso, será a linguagem da Microsoft C#.NET no framework 3.5. Para tanto, o artigo desenvolve um estudo de caso onde uma solução Genexus com recursos de envio de mensagens aplicado em um ERP acadêmico sofreu uma atualização sendo necessária a introdução de um web service que passou a gerenciar exclusivamente os processos de envio de mensagens. PALAVRAS-CHAVE: SMTP, correio eletrônico, , GENEXUS. https://doi.org/10.5281/zenodo.15571842
Processando o Saber nº 3, 2011 83 ABSTRACT is responsible for sending electronic mail messages that are being KEY-WORDS: INTRODUÇÃO As relações comerciais do século XXI utilizam meios digitais em sua maioria e a comunicação entre as empresas com seus clientes ou mesmo com outras empresas se faz através de mensagens eletrônicas ou, ao menos, é uma tendência que se consolida cada vez mais e torna-se necessário que os desenvolvedores disponibilizem recursos de envio e recepção de mensagens em suas soluções de software independente do tamanho da aplicação. Uma aplicação atual que não possui esse recurso tende a não atender as necessidades dos usuários por isso o conhecimento do protocolo SMTP é por parte dos desenvolvedores é bastante seu departamento de Recursos Humanos. 1 ORIGEM Até 1977, a Arpanet utilizava vários padrões informais de mensagens de texto ( ) enviadas entre computadores de seu host e oferecer um padrão. O resultado desse esforço foi o padrão for Comments (RFC) # 733, “Norma para o formato de ARPANET
Processando o Saber nº 3, 2011 84 nos softwares da época, permitindo ao mesmo tempo vários novos recursos (CROCKER, 1982). Essa é a origem do protocolo SMTP que é o cerne para o foco central desse artigo que é o GENEXUS mandando com linguagem nativa e não nativa. O objetivo do SMTP) é a transferência de independente do subsistema de transporte especial e requer apenas um 1 2 DESENVOLVENDO APLICAÇÕES QUE SE UTILIZAM DE SMTP A aplicação descrita no artigo possui conceitos de envio de mensagens de e apresenta a tecnologia SMTP descrevendo um modelo prático adotado comumente por aqueles que utilizam a plataforma Genexus para desenvolvimento de soluções. 2.1 APLICAÇÃO NATIVA GENEXUS SMTP Genexus é uma ferramenta de desenvolvimento de sistemas que permite a construção de software com grande capacidade tecnológica, por meio de seus geradores de código, que produz código fonte nas linguagens Java, C# e Ruby, a partir da programação na própria linguagem Genexus (GONDA, 1988). Esse mecanismo permite que a aplicação Genexus fique desvinculada da tecnologia nativa, podendo migrar para uma nova tecnologia emergente apenas pela execução de um novo gerador de código, eventualmente que venha ser utilizado. Ou seja, uma aplicação Genexus que seja gerada em C#, por exemplo, pode naturalmente ser reconstruída em Java, sem que isso implique qualquer mudança no sistema (GOMDA, 2003). O que se cita, como qualquer mudança, é a reescrita do código da linguagem original A para a nova linguagem B, sendo que a principal vantagem do Genexus é que ele tem seu próprio código de comandos internos não precisando ser reescrito. O que de fato acontece é que o 1 Ver Anexo A.
Processando o Saber nº 3, 2011 85 Genexus usa um compilador de uma linguagem de mercado para gerar o seu código baseado os códigos internos do genexus descritos na base de conhecimento. A base de conhecimento é o projeto do Genexus propriamente dito e possue todos os parâmetros, descrições de entidades (Transações), regras de negócio e linhas de códigos internos e tudo isso é traduzido para o compilador. Para produzir um pequeno sistema que envie no protocolo SMTP em Genexus, pode-se realizá-lo de duas maneiras, a primeira a ser apresentada a seguir, utiliza recursos da própria ferramenta para enviar A crie uma aplicação GENEXUS utilizando a versão X desse artigo. B além do Genexus é necessária a instalação dos seguintes Microsoft Windows XP SP2, ou superior, Microsoft .NET Framework 3.5 ou superior, Microsoft SQL Server 2005 Express (Free) ou 2008, Microsoft Internet Explorer 6.0 SP1 ou superior. C a aplicação deverá possuir apenas um objeto webpanel Figura 1 – Variáveis utilizadas no sistema Fonte: Genexus X Evolution 1 versão 10.1.38483 U4
Processando o Saber nº 3, 2011 86 D veja que existem variáveis do tipo SMTP, MailMessage e MailRecipient que são as principais desta aplicação. A interface que será programada nesse exemplo é montada como um painel Figura 2 – Tela da Aplicação de envio de Emails Genexus Nativo Fonte: Genexus X Evolution 1 versão 10.1.38483 U4 1, 2 e 3 são controles do tipo 4,5 e 6 são as variáveis criadas no item C. 7 um controle do tipo Button. 8 tabela com 2 colunas e 5 linhas. E o evento programado no CONFIRMAR é descrito a seguir, e na sequência as linhas são explicadas:
Processando o Saber nº 3, 2011 87 Figura 3 – Código do Programa de envio de Emails em GENEXUS Fonte: Genexus X Evolution 1 versão 10.1.38483 U4 Linhas 3 até 9 a variável SMTPSession (simbolizada SMTPSession e tem a função de carregar os dados do lado servidor de email. Para este exemplo é utilizado uma conta do provedor Gmail (www.gmail.com que no caso do é smtp.gmail.com. A porta também é determinada no site do gmail e as demais informações são referentes a usuário, senha, endereço e nome da origem do Linha 10 o método login faz o efetivo acesso ao servidor de no caso do gmail.
Processando o Saber nº 3, 2011 88 Linhas 10 a 12 caso algum erro aconteça é possível tratar sendo que o erro diferente de zero é algum problema obtido no login com o servidor de Linhas 14 e 15 a variável MailMessage é responsável pela mensagem propriamente dita e nela são registrados os métodos HTMLtext contendo a mensagem propriamente dita e o método subject que contem o título. Ambas devem ser do tipo texto. Linha 17 o endereço de destino pode ser um ou vários deles separados por ponto e vírgula e por isso existe um tipo de objeto MailRecipient em seu método address. Linha 18 de volta à variável MailMessage adiciona-se o método add para adicionar o objeto contendo a coleção de a serem enviados. Linha 19 envia o ao(s) destino(s). Linhas 20 a 30 faz-se o tratamento de erros caso alguma de SMTP. E O teste é simples e, de acordo com a tela seguinte, basta Figura 4 – Tela do Programa de envio de Emails em GENEXUS em execução Fonte: Genexus X Evolution 1 versão 10.1.38483 U4
Processando o Saber nº 3, 2011 89 2.2 APLICAÇÃO NÃO NATIVA GENEXUS SMTP Apesar de Genexus manter a postura de independência da tecnologia do compilador escolhido, ainda é possível programar em escolhido realiza, e ainda de forma automatizada nos processos repetitivos que podem ser deixados para que o próprio Genexus resolva. Neste exemplo, o processo de envio de é o mesmo, ou seja, utilizar os recursos do protocolo SMTP para o envio de mensagens de correio eletrônico. A diferença está em demonstrar a utilização de linguagem do compilador que, neste caso, é utilizada a linguagem C#.NET framework 3.5: A crie uma aplicação GENEXUS com um objeto procedure e um objeto sendo que a procedure conterá um código nativo em C#, e o webpanel é semelhante ao exemplo anterior. B a procedure se chamará sendmail_csharp e conterá as Figura 5 – Variáveis utilizadas no sistema Fonte: Genexus X Evolution 1 versão 10.1.38483 U4
Processando o Saber nº 3, 2011 90 C os parâmetro de entrada e saída na aba Rules é a seguinte: parm(in:&EMailTo, in:&EMailSubject, in:&EMailMessage, out:&Retorno); Os parâmetros com o in são os parâmetros de entrada que no caso são 2: o destino, o titulo e a mensagem e o parâmetro com out é o parâmetro de saída. D o código é em linguagem C#, que no GENEXUS são predescedidos pela palavra csharp, na frente da frase e as variáveis Genexus utilizadas vem entre colchetes e pontos de exclamação. As Figura 6 – Código em CSHARP inserido no programa GENEXUS Fonte: Genexus X Evolution 1 versão 10.1.38483 U4. Linhas 1 até 5 preenchem dados referentes a conta servidora, a conta de que enviará a mensagem, semelhante ao exemplo apresentado anteriormente na linguagem nativa. Linha 8 Instancia um objeto da classe MailMessage chamado mm. Linha 9 preenche a origem da mensagem.
Processando o Saber nº 3, 2011 97 d) essa aplicação recebe esses dados e processa o retornando um 1 como true (foi enviado) ou 0 false (não foi enviado); e) ambas as aplicações rodam no servidor sendo um com máquina virtual para 32 bits, ou seja, a que processa os 5 CONCLUSÃO No exemplo descrito na pesquisa, foi utilizado um servidor de comercial gratuito, o SMTP do GMAIL, possibilitando o envio de por meio de aplicações externas ao ambiente. Ressalta-se a existência de condições e limitações que o servidor impõe nas questões de segurança e quantidade de a serem enviados. Um servidor próprio de SMTP poderia melhorar certos aspectos, mas requereria muito esforço adicional para o tratamento de SPAMS, Virus e outras pragas existentes na rede. Este artigo descreveu a maneira de utilizar o protocolo SMTP de servidores existentes na com Genexus, porém, para futuros trabalhos, poderia ser interessante a programação de um servidor próprio do protocolo SMTP. Em caso de problemas de compatibilidade, as vezes é necessário usar de recursos como, por exemplo, o uso de como desmonstrado na pesquisa. REFERÊNCIAS BIBLIOGRÁFICAS CROCKER, D. . RFC-822, august, 1982. GENEXUS DOWNLOAD TRIAL VERSION. GENEXUS DOWNLOAD TRIAL VERSION.
Processando o Saber nº 3, 2011 98 GONDA, B.; Jodal, N. GONDA, B. . POSTEL, J. . RFC-821, august, 1982.
Processando o Saber nº 3, 2011 99 ANEXO A // Some common SMTP status codes are as follows: // 211 - System status message. // 214 - Help message formatted for human reader follows. // 220 - SMTP service ready. // 221 - Service/connection closing. // 250 - Successful request. Action completed. // 251 - Recipient is not local to the server, but the server will accept and forward the message. the message and attempt delivery. // 354 - Start message input now, end with .. Indicates the server is ready to accept a message once youve given it From: and To: information // 421 - Service is not available and connection will be closed. // 450 - Requested command failed because the recipients mailbox is unavailable. // 451 - Command has been aborted due to a server error. Possibly notify your SysAdmin. // 452 - Command has been aborted because the server has // 500 - Server could not recognize the command was due to a syntax error. (usually due to mail client error) // 501 - Syntax error was found in command arguments. (usually due to mail client error) // 502 - Command was not implemented. (usually due to mail client error) // 503 - Server has encounterd a bad command or sequence of commands. (usually due to mail client error) // 504 - Command parameter is not implemented. (usually due to mail client error) // 550 - Command failed because the users mailbox was unavailable (or you did not have permissions to send to this mailbox) // 551 - Recipient is not local to the server. Server responds with a fowarding address that should be tried. // 552 - Action was aborted because storage allocation was exceeded. // 553 - Action was aborted because the mailbox name was invalid. // 554 - Transaction failed, without a clear reason