4D Internet Commands v16

Apêndice A, Dicas de programação

Página Inicial

 
4D Internet Commands v16
Apêndice A, Dicas de programação

Apêndice A, Dicas de programação  


 

Em muitos exemplos deste manual, se utiliza uma estrutura de programação particular. Muitos destes exemplos executam séries de comandos que utilizam a instrução Case de um modo pouco ortodoxo.

Muitos dos comandos em 4D Internet Commands requerem a execução completa de uma sequência de comandos. A falha de um só comando da sequência é suficiente para interromper o processo, o uso de condições if em cascata em vários níveis poderia ser muito entediante:

 If(SMTP_New($smtp_id)=0)
    If(SMTP_Host($smtp_id;◊pref_Server)=0)
       If(SMTP_From($smtp_id;vFrom)=0)
          If(SMTP_To($smtp_id;vTo)=0)
             etc
          End if
       End if
    End if
 End if

Uma alternativa a este método é se apoiar na forma como 4D executa as instruções Case. Cada elemento de uma instrução Case é executada por 4D para determinar se o valor devolvido é True ou False. Se todos os elementos de uma instrução Case devolvem um valor falso, todas as condições são executadas. As seguintes linhas substituem ao código anterior:

 $SentOK:=False `Uma bandeira para indicar se todas as chamadas foram enviadas
 Case of
    :(SMTP_New($smtp_id)#0)
    :(SMTP_Host($smtp_id;◊pref_Server)#0)
    :(SMTP_From($smtp_id;vFrom)#0)
    :(SMTP_To($smtp_id;vTo)#0)
    :(SMTP_Subject($smtp_id;vSubject)#0)
    :(SMTP_Body($smtp_id;vMessage)#0)
    :(SMTP_Send($smtp_id)#0)
    Else
       $SentOK:=True `a mensagem foi composta e enviada corretamente
 End case
 If($smtp_id#0) `Se uma mensagem foi criada em memória, deve ser apagada agora
    $OK:=SMTP_Clear($smtp_id)
 End if

Neste exemplo, cada comando envia o erro zero se completada corretamente. Para poder avaliar cada condição, 4D deve executar cada linha. Como cada condição compara o resultado "diferente de zero", o valor enviado sempre é falso e 4D não encontra um elemento para ser detida até que um dos comandos falha. Se todos os comandos são executados corretamente, 4D procede com a execução do método até a condição Else onde a bandeira $SentOK indica que a mensagem foi composta e enviada corretamente.

Se está pensando em implementar um sistema de correio dentro de seu banco de dados, onde o usuário pode "responder" os correios recebidos, estas são algumas recomendações do RFC # 822:

  • O endereço do "remetente" somente deve enviar respostas relativas aos problemas na entrega de correio e não as respostas relacionadas com o tema da mensagem. Se não existe o campo "Remetente", as notificações devem ser enviadas ao endereço que aparece no campo "De".
  • O endereço do "Remetente" não deve ser utilizada em processos automáticos de resposta as mensagens. Ao contrário, a mensagem deve usar o campo "Responder a" ou o campo "De", dependendo dos fatores descritos a continuação.
  • Se existe o campo "Responder a" e contém uma ou mais endereços de correio, então as respostas devem ser direcionadas a esta lista. Os endereços do cabeçalho "Responder a" tem prioridade sobre os endereços listados no cabeçalho "De". No entanto, se o campo "Responder a" não existe mas o campo "De" existe, as respostas devem ser enviadas à caixa de correio indicado no cabeçalho "De".

Estas recomendações só pretendem ajudar no processo de decisão, quando o email é lidado por programação no caso das ações de tipo "Resposta". Uma vez criada a mensagem de resposta, o usuário final pode substituir qualquer destes valores predeterminados antes de enviar a mensagem.

 
PROPRIEDADES 

Produto: 4D Internet Commands
Tema: Appendixes

 
HISTÓRIA 

 
ARTICLE USAGE

4D Internet Commands ( 4D Internet Commands v16)