Normalmente, o CGI de mailto.exe é usado para implementar WEBMAIL, escrevendo a instrução "<form action="mailto:email address" method=post >" no arquivo HTML ou chamando a função WINDOWS API. Usar a API do WINDOWS e escrever a instrução "<form action="mailto:email address" method=post >" no arquivo HTML exige que o navegador do usuário carregue software como EXCHANGE, OutlookEXPRESS ou OUTLOOK, e também há alguns navegando O servidor não suporta a instrução MAILTO. A utilização do CGI para implementação do WEBMAIL não possui requisitos no navegador do usuário, mas não é eficiente. A tecnologia CGI está sendo gradualmente substituída pela tecnologia ISAPI/NSAPI. Este artigo discutirá a implementação de WEBMAIL usando tecnologia ISAPI.
É muito simples desenvolver programas de servidor Web usando Delphi 4. O Delphi 4 fornece um grande número de componentes e objetos para suportar o desenvolvimento de programas de servidor Web. A seguir está um exemplo de como usar DELPHI para desenvolver um programa ISAPI WEBMAIL que responda à entrada do usuário. Somente usuários cadastrados no servidor de envio podem enviar e-mails pelo navegador. Por uma questão de simplicidade, o programa não fornece confidencialidade aos dados transmitidos.
Primeiro, instale o mecanismo de banco de dados dbe no servidor WEB e defina o alias do banco de dados: yh, apontando para um arquivo de banco de dados user.db contendo o nome de usuário e a senha do usuário. Em seguida, crie dois arquivos HTML, denominados: dl.html, qd.html respectivamente, e coloque-os no diretório padrão do servidor WEB (por exemplo: C: INETPUBWWWROOT).
O conteúdo de dl.html é o seguinte:
<html>
< head >< title >Sistema de envio de e-mail</ /title >< /head >
<corpo>
<h1>Sistema de envio de e-mail</h1>
< p > Por favor, digite seu nome de usuário e senha. </p>
<form method="post" action="/scripts/xsmd" >
< p >Nome de usuário: < input type="text" length=10
nome="nome de usuário" >
Senha: < tipo de entrada = "senha"
comprimento=10 nome="senha" >< /p >
<p>< input type="submit" value="OK" >
< input type="reset" value="Limpar" >< /p >
< /formulário>
</corpo>
</html>
O conteúdo do arquivo qd.html é o seguinte:
< html >< head >< title >Preencha o formulário</ /title >< /head >
<corpo>
<form método="post" action="feedback" >
< p >Por favor, insira o endereço de e-mail de recebimento:toaddress:
< tipo de entrada = "texto" comprimento = 20
nome=”toaddress” >< /p >
< p >Por favor preencha o assunto. < tipo de entrada = "texto"
comprimento=20 nome="assunto" >< /p >
<p>Conteúdo:</p>
<p>< input type="textarea" comprimento=40
largura=40 nome=”corpo” >< /p >
<p>< input type="submit" value="OK" >
< input type="reset" value="Limpar" >< /p >
< /formulário>
</corpo>
</html>
Crie um novo aplicativo WEB SERVER baseado em ISAPI no DELPHI e adicione manualmente nmsmtp1, query1 e pageproducer1.
Entre eles: propriedade de pageproducer1: htmlfile: c:inetpubwww.rootqd.html. A propriedade:host de nmsmtp1 (o endereço do servidor de envio de e-mail) é smtp.netease.com aqui. porta:25. As variáveis globais são: sername:string;flag:boolean;
Adicione um item de ação com o caminho /feedback, o código é o seguinte:
procedimento TWebModule1.WebModule1WebActionItem1
Ação(Remetente: TObject;
Solicitação: TWebRequest;
TWebResponse; var manipulado: Boolean);
Contagem de Var:inteiro;
S:corda;
Começar
Consulta1.fechar;
Consulta1.sql.clear;
S:='selecione contagem(nome de usuário) de
user.db onde nomedeusuario=”';
S:=s+request.contentfields.values['nomedeusuário']+'"';
S:=s+' e senha=”';
S:=s+request.contentfields.values['psword']+'"';
Consulta1.sql.add(S);
Consulta1.open;
Se query1.count=0
então response.content:='< html >< head >< title >
</title >< body >O nome de usuário e a senha estão incorretos, digite-os novamente.
</body>< /html>'
Outro
Nome de usuário:=request.contentfields.values['nomedeusuário'];
Response.content:=pageproducer1.content;
Fim;
Adicione outro item de ação com o caminho /sendmail.
O código do seu programa é o seguinte:
procedimento TWebModule1.WebModule1Web
ActionItem2Action(Remetente: TObject;
Solicitação: TWebRequest;
TWebResponse; var manipulado: Boolean);
Corpo Var:string;
Começar
Sinalizador:=verdadeiro;
corpo:=request.contentfields.values['corpo'];
Páginaproducer1.htmldoc.clear;
Pageproducer1.htmldoc.add('< html >< corpo >');
Nmsmtp1.postmessage.clear;
Nmsmtp1.postmessage.fromaddress:=nome de usuário+
'@netease.com';
Nmsmtp1.postmessage.from:=nome de usuário;
Nmsmtp1.postmessage.body.add(corpo);
Nmsmtp1.postmessage.toaddress.add
(request.contentfields.values['toaddress']);
Nmsmtp1.postmessage.subject:=
request.contentfields.values['assunto'];
Nmsmtp1.conectar;
Se flag=true então comece Nmsmtp1.sendmail;
nmsmtp1.descontentamento;fim
pageproducer1.htmldoc.add
('< /body >< /html >');
resposta.content:=pageproducer1.content;
fim;
Os eventos que aumentam nmsmtp1 são os seguintes:
procedimento TWebModule1.NMSMTP1Connect(Remetente: TObject);
começar
pageproducer1.htmldoc.add
('< p >Já conectado ao servidor de e-mail de saída</p>');
fim;
procedimento TWebModule1.NMSMTP1Connection
Falha (Remetente: TObject);
começar
sinalizador:=falso;
pageproducer1.htmldoc.add
('< p >Falha na conexão< /P >');
fim;
procedimento TWebModule1.NMSMTP1ConnectionRequired
(var manipulado: booleano);
começar
pageproducer1.htmldoc.add('< p >Requer conexão</p>');
fim;
procedimento TWebModule1.NMSMTP1Failure(Remetente: TObject);
começar
pageproducer1.htmldoc.add('< p >Falha ao enviar e-mail</p>');
sinalizador:=falso;
fim;
procedimento TWebModule1.NMSMTP1Header
Incompleto(var manipulado: Boolean;
hiType: Inteiro);
começar
pageproducer1.htmldoc.add('< p >head está incompleto</ /p >');
sinalizador:=falso;
fim;
procedimento TWebModule1.NMSMTP1InvalidHost
(var manipulado: booleano);
começar
pageproducer1.htmldoc.add('< p >
O endereço do servidor de e-mail de envio é inválido</p>');
sinalizador:=falso;
fim;
procedimento TWebModule1.NMSMTP1RecipientNot
Encontrado(Destinatário: String);
começar
pageproducer1.htmldoc.add
('< p >O endereço de e-mail recebido está incorreto</p>');
sinalizador:=falso;
fim;
procedimento TWebModule1.NMSMTP1Success(
Remetente: TObject);
começar
pageproducer1.htmldoc.add('< p >
E-mail enviado com sucesso</ /p >');
fim;
Salve o projeto como sendmail.dpr, compile-o e coloque-o no caminho do arquivo executável do servidor WEB (como: c:intpubscripts), você pode responder à entrada do usuário do arquivo HTML dl.htm, e se o usuário nome de usuário e senha estão corretos. Você pode entrar na página de envio de e-mails. O usuário pode enviar e-mails após preencher o endereço de e-mail, assunto e conteúdo. Este programa passou na depuração no NT SERVER.