{-------------------------------------------------------------}
{    Programa de correio, cliente SMTP e POP3
{    Autor: Jose' Antonio Borges
{    Em 10/04/98
{-------------------------------------------------------------}

{$M 16584,8192}

{-------------------------------------------------------------}
{		arquivos de inclusao obrigatoria
{-------------------------------------------------------------}

uses winProcs, winDos, winTypes, shellApi,
     dvcrt, strings, dvWin, winsock,
     carVars, carFolhe, carConf, carRede, carApeli,
     carPop3, carSMTP, carUtil, carMsg, carVerif;

{-------------------------------------------------------------}
{		     rotina de inicializacao
{-------------------------------------------------------------}

procedure inicializa;
var s: string;
    erro: integer;
begin
    debug := false;
    sintInic (0, sintambiente ('CARTAVOX', 'DIRCARTAVOX'));

    clrscr;
    setWindowText (crtWindow, 'CARTAVOX');
    delay (200);

    textBACKGROUND (BLUE);
    mensagem ('CTINIC', 0);  {'CARTAVOX - Correio Eletrônico - NCE/UFRJ - v.'}
    sintWriteln (VERSAO);
    textBackground (BLACK);
    writeln;

    {************ Pega nome dos servidores e outras configurações ***********}

    hostSMTP     := sintAmbiente ('CARTAVOX', 'SERVIDORSMTP');
    hostPOP3     := sintAmbiente ('CARTAVOX', 'SERVIDORPOP3');
    nomeUsuario  := sintAmbiente ('CARTAVOX', 'NOMEUSUARIO');
    enderUsuario := sintAmbiente ('CARTAVOX', 'ENDERUSUARIO');
    contaUsuario := sintAmbiente ('CARTAVOX', 'CONTAUSUARIO');
    dirRecebe    := sintAmbiente ('CARTAVOX', 'DIRRECEBE');
    dirEnvia     := sintAmbiente ('CARTAVOX', 'DIRENVIA');

    nomeArqApelidos := sintAmbiente ('CARTAVOX', 'APELIDOS');
    if nomeArqApelidos = '' then
        nomeArqApelidos := 'c:\winvox\apelidos.ini';

    s := sintAmbiente ('CARTAVOX', 'LIMITEAUTOREC');
    if s <> '' then
        val (s, maxTamAuto, erro);
    if (erro > 0) or (maxTamAuto < 5000) then
        maxTamAuto := 10000000;

    nomeAssinatura := sintAmbiente ('CARTAVOX', 'ASSINATURA');

    s := sintAmbiente ('CARTAVOX', 'COPIAENVIADAS');
    guardaEnviadas := copy (s, 1, 1) <> 'N';

    s := sintAmbiente ('CARTAVOX', 'BIPANOSPEAKER');
    bipaNoSpeaker := copy (s, 1, 1) <> 'N';

    portaSMTP := 25;
    portaPOP3 := 110;

    if (hostSMTP = '') or (hostPOP3 = '') or (enderUsuario = '') or (contaUsuario = '') or
       (dirRecebe = '') or (dirEnvia = '') then
            configurar;

    nbaseEnvia  := 0;
    nbaseRecebe := 0;
    nbaseCopia  := 0;
    pCC  := NIL;
    pBCC := NIL;
end;

{-------------------------------------------------------------}
{                          ajuda
{-------------------------------------------------------------}

procedure ajuda;
begin
   mensagem ('CTAJUD01', 1);      {'As opções são'}
   if not keypressed then
       mensagem ('CTAJUD02', 1);  {'  E   enviar carta'}
   if not keypressed then
       mensagem ('CTAJUD03', 1);  {'  T   transmitir cartas escritas'}
   if not keypressed then
       mensagem ('CTAJUD04', 1);  {'  R   receber cartas do correio'}
   if not keypressed then
       mensagem ('CTAJUD05', 1);  {'  F   folhear as cartas já recebidas'}
   if not keypressed then
       mensagem ('CTAJUD06', 1);  {'  C   configurar o programa'}
   if not keypressed then
       mensagem ('CTAJUD6A', 1);  {'  V   verificar cartas preparadas ou transmitidas'}
   if not keypressed then
       mensagem ('CTAJUD07', 1);  {'  A   editar apelidos'}

   while keypressed do readkey;
end;

{-------------------------------------------------------------}
{                     programa principal
{-------------------------------------------------------------}

var c1, c2: char;
    processando: boolean;
begin
    inicializa;

    processando := true;
    while (processando)  do
       begin
           textBackground (BLUE);
           mensagem ('CTQUALOP', 0);  {'Qual sua opção ? '}
           textBackground (BLACK);
           sintLeTecla (c1, c2);
           writeln;
           if c1 = #0 then
               ajuda
           else
               case upcase(c1) of
                   'E':  enviarCarta;
                   'T':  transmitirCartas;
                   'R':  receberCartas;
                   'F':  folhearCartas;
                   'C':  configurar;
                   'A':  editarApelidos;
                   'V':  verificarEnviadas;
                   'D':  begin
                             debug := not debug;
                             if debug then
                                 mensagem ('CTMODDEB', 1)   {'Modo debug: cartas não serão apagadas'}
                             else
                                 mensagem ('CTMODNOR', 1);  {'Modo normal'}
                             writeln;
                         end;

                   ESC:  processando := false;
                   #$0d: ;
               else
                   mensagem ('CTOPVINV', 1);  {'Opção inválida, aperte F1 para ajuda'}
               end;
       end;

    mensagem ('CTFIM', 1);  {'Fim do Correio'}
    delay (2000);
    sintFim;
    doneWinCrt;
end.
