4D Internet Commands v16

Anexo A: Consejos de programación

Inicio

 
4D Internet Commands v16
Anexo A: Consejos de programación

Anexo A: Consejos de programación  


 

En muchos ejemplos de este manual, se utiliza una estructura de programación particular. Muchos de estos ejemplo ejecutan series de comandos que utilizan la instrucción Case de manera poco ortodoxa.

Muchos de los comandos en 4D Internet Commands requieren la ejecución completa de una secuencia de comandos. La falla de un solo comando de la secuencia es suficiente para interrumpir el proceso, el uso de condiciones if en cascada en varios niveles podría ser muy tedioso:

 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

Una alternativa a este método es apoyarse en la forma como 4D ejecuta las instrucciones Case. Cada elemento de una instrucción Case es ejecutado por 4D para determinar si el valor devuelto es True o False. Si todos los elementos de una instrucción Case devuelven un valor falso, todas las condiciones se ejecutan. Las siguientes líneas reemplazan al código anterior:

 $SentOK:=False `Una bandera para indicar si todas las llamadas se enviaron
 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 `el mensaje se compuso y envío correctamente
 End case
 If($smtp_id#0) `Si un mensaje se creó en memoria, se debe borrar ahora
    $OK:=SMTP_Clear($smtp_id)
 End if

En este ejemplo, cada comando envía el error cero si se completa correctamente. Para poder evaluar cada condición, 4D debe ejecutar cada línea. Como cada condición compara el resultado "diferente de cero", el valor enviado siempre es falso y 4D no encuentra un elemento para detenerse hasta que uno de los comandos falla. Si todos los comandos se ejecutan correctamente, 4D procede con la ejecución del método hasta la condición Else donde la bandera $SentOK indica que el mensaje fue compuesto y enviado correctamente.

Si está pensando en implementar un sistema de correo dentro de su base de datos, donde el usuario puede "responder" los correos recibidos, estas son algunas recomendaciones del RFC # 822:

  • La dirección del "remitente" sólo debe enviar respuestas relativas a los problemas en la entrega de correo y no las respuestas relacionadas con el tema del mensaje. Si no existe el campo "Remitente", las notificaciones deben enviarse a la dirección que aparece en el campo "De".
  • La  dirección del "Remitente" no se debe utilizar en procesos automáticos de respuesta a los mensajes. En cambio, el mensaje debe usar el campo "Responder a" o el campo "De", dependiendo de los factores descritos a continuación.
  • Si existe el campo "Responder a" y contiene una o más direcciones de correo, entonces las respuestas deben dirigirse a esta lista. Las direcciones del encabezado "Responder a" tienen prioridad sobre las direcciones listadas en el encabezado "De". Sin embargo, si el campo "Responder a" no existe pero el campo "De" existe, las respuestas deben ser enviadas al buzón de correo indicado en el encabezado "De".

Estas recomendaciones sólo pretenden ayudar en el proceso de decisión, cuando el direccionamiento de correo es manejado por programación en el caso de las acciones de tipo "Respuesta". Una vez creado el mensaje de respuesta, el usuario final puede reemplazar cualquiera de estos valores predeterminados antes de enviar el mensaje.

 
PROPIEDADES 

Producto: 4D Internet Commands
Tema: Anexos

 
HISTORIA 

 
ARTICLE USAGE

4D Internet Commands ( 4D Internet Commands v16)