Este sistema funciona perfeitamente com q-mail.
para funcionar com outras contas ... poderá ser necessário mudar o $email.
alguns provedores naum precisam do e-mail completo para acessar a conta.
e em alguns outros casos sera necessário trocar o local onde tem \% por \@
A um tempo atras eu tava querendo desenvolver um web-mail mas num tive tempo para termina-lo.... de qualquer forma vou postar os testes que fiz de recepção de email...
Para que o sistema funcione, o servidor deve possuir as modules:
CGI
CGI::Cookie
Mail::POP3Client
Socket
Caso você esteja em um servidor windows, entre na pasta do perl:
c:\perl\bin\
execute o arquivo ppm.exe
e instale você msm as modules.
para instalar basta digitar
install Mail::POP3Client
e ele instala sozinho.
De o nome de pop3.pl a este arquivo.
#!/usr/bin/perl
use CGI qw/:standard/;
use CGI::Cookie;
use Mail::POP3Client;
use Socket;
$form = new CGI;
$alias = $form->param('alias');
$senha = $form->param('senha');
$server = $form->param('server');
$smtp = $form->param('smtp');
$email = "$alias" . "\%" . "$server";
@cookies = ('alias','senha');
@valores = ($alias,$senha);
for($i = 0; $i < 2; $i++){
$cookie = new CGI::Cookie(
-name => $cookies[$i],
-value => $valores[$i],
-domain => $domain,
-path => $path
);
$cookie =~ s/%([a-fA-F0-9][a-fA-F0-9])/ pack("C", hex($1))/eg;
print "Set-Cookie: $cookie\n";
}
$pop2 = new Mail::POP3Client( HOST => "$smtp.$server", AUTH_MODE => 'PASS' );
$pop2->User( "$email" );
$pop2->Pass( "$senha" );
$pop2->Connect();
$num_mens = $pop2->Count;
if ($num_mens <= 0) { $num_mens = '0'; }
print "Content-type: text/html\n\n";
print "<DIV ALIGN=\"LEFT\">\n";
print "<FONT SIZE=\"1\" FACE=\"TAHOMA\">\n";
print "Ola! $alias, você tem $num_mens mensagen(s) em sua caixa de entrada!<BR> <BR>\n";
for($i = 1; $i <= $num_mens; $i++){
foreach($pop2->Head($i)){
print "<A HREF=\"mens.pl?alias=$email&senha=$senha&server=$server&smtp=$smtp&mens=$i\">".$_."</A><BR>\n" if(/^(From|Subject)/);
}
print "<BR> <BR>\n";
}
print "</FONT>\n";
print "</DIV>\n";
$pop2->Close();
Salve este outro arquivo como mens.pl
#!/usr/bin/perl
use Mail::POP3Client;
use Socket;
&Leia_pedido;
$server ="$in{'server'}";
$alias ="$in{'alias'}";
$senha ="$in{'senha'}";
$smtp = "$in{'smtp'}";
$email = "$alias" . "\%" . "$server";
$pop2 = new Mail::POP3Client( HOST => "$smtp.$server", AUTH_MODE => 'PASS' );
$pop2->User( "$email" );
$pop2->Pass( "$senha" );
$pop2->Connect() & $pop2->POPStat();
$body = $pop2->Body($in{'mens'});
#print "Content-type: text/html\n\n";
print "$body\n";
$pop2->Close();
sub Leia_pedido {
@pares = split(/&/, $ENV{'QUERY_STRING'});
foreach $par(@pares) {
($nome, $valor) = split(/=/, $par);
$valor =~ s/~/=/g;
$in{$nome} = $valor;
}
}
quase ia me esquecendo, a pagina de login:
salve-a como index.html
<HTML>
<HEAD>
<TITLE>Web-Mail</TITLE>
<STYLE TYPE="text/css"><!--
.input { Font-Size:11px; Font-Family:Tahoma; BackGround-Color:#F0F0F0; }
.desc { Font-Size:11px; Font-Family:Tahoma; Font-Weight:Normal; }
//--></STYLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#000000">
<FORM METHOD="POST" ACTION="pop3.pl">
<INPUT TYPE="HIDDEN" NAME="smtp" VALUE="smtp">
<TABLE BORDER="1" BORDERCOLOR="#808080" CELLPADDING="0" CELLSPACING="0">
<TR><TD BGCOLOR="#F0F0F0"><FONT CLASS="desc"> Nome: </FONT></TD>
<TD BGCOLOR="#F0F0F0"><INPUT TYPE="TEXT" NAME="alias" SIZE="15" CLASS="input"></TD>
<TD BGCOLOR="#F0F0F0" valign="middle"><FONT CLASS="desc"> @<select size="1" name="server" CLASS="input">
<option value="algumacoisa.net" selected>algumacoisa.net</option>
<option value="lalala.com.br">lalala.com.br</option>
</select></FONT></TD></TR>
<TD BGCOLOR="#F0F0F0"><FONT CLASS="desc"> Senha: </FONT></TD>
<TD BGCOLOR="#F0F0F0"><INPUT TYPE="PASSWORD" NAME="senha" SIZE="15" CLASS="input"></TD>
<TD BGCOLOR="#F0F0F0"><FONT CLASS="desc"> <INPUT TYPE="SUBMIT" VALUE=" OK " CLASS="input" STYLE="Font-Size:10px;"></FONT></TD>
</FORM>
</BODY>
</HTML>
Façam bom uso...
Esse sistema ta bem simples msm era so um teste ....