
Email Em Perl
#1
Posted 12/07/2004, 02:06
Comecei agora a aprender a fazer páginas e talz...
Precisava fazer um formulário de pedidos, encomendas de compras, e acabei parando nos cgi/perl's da vida..
Enfim, quero saber se tem como enviar email por um script perl sem ter que usar sendmail ou programas similares.
pois o meu servidor não suporta.
eu achei um script no cgiclube que não precisaria de sendmail, mas não funcionou de jeito nenhum...
é o seguinte:
#!/usr/bin/perl
use Net::SMTP;
$smtp = Net::SMTP->new('smtp.cgiclube.net');
$smtp->mail("cgiclube");
$smtp->auth("cgiclube","senha");
$smtp->to('alguem\@cgiclube.net\n');
$smtp->data();
$smtp->datasend("To: alguem\@cgiclube.net\n\n");
$smtp->datasend("From: alguem\@cgiclube.net\n\n");
$smtp->datasend("email enviado! cgiclube.net");
$smtp->quit;
print "Content-type: text/html\n\n";
print "email enviado";
exit;
Essa biblioteca, todos os servidores que suportam perl e cgi, tem ela? não pode ser isso que tá faltando?
alguns scripts de teste extramente elementares rodaram sem problema, mas esse.... :\
o que pode tá errado?
bom é claro que substitue os valores exemplos, pelos correspondentes ;\
O que pode ser???
E sabem de algum lugar onde possa encontrar explicação mais detalhada sobre envio de emails por perl...
Desde já agradeço...
obrigado
#2
Posted 12/07/2004, 07:54
($smtp->to('alguem\@cgiclube.net\n')

se vc usa '(aspas) não precisa de contra barra para especificar a maioria dos caracteres reservados da linguagem.
o correto seria:
$smtp->to('alguem@cgiclube.net');
ou
$smtp->to("alguem\@cgiclube.net\n");
Steven Koch

stvkoch@gmail.com
#3
Whitesnake
Posted 12/07/2004, 20:24
#!/usr/bin/perl
print "Content-type:text/html\n\n";
use CGI::Carp(fatalsToBrowser);
use Net::SMTP;
print qq|
<font face="Sans-serif" size="1">
Sucesso! O <b>Net::SMTP</b> está instalado corretamente neste servidor.
</font>
|;
Caso ocorra algum erro, é porque infelizmente seu servidor não permite o envio de emails através do módulo Net-SMTP.
#4
Posted 13/07/2004, 00:51
Bom, quanto a sintaxe aquela, eu tinha até testado usando aspas duplas em tudo, pra garantir, não funcionou igual.
E quanto ao teste apresentado por Stone Rock, o servidor apresentou mensagem de erro, se tiver tudo de acordo com o teste, o servidor não aceita mesmo esse recurso.
Já foi uma luta pra achar servidor grátis que aceitasse cgi, nem me surpreende essas limitações. Mas como mal tava começando e queria fazer testes e nõa sabia dessa pobreza toda, nõa investi em domínio pago.
Mas pelo jeito vou ter que mudar minha conduta :]
Grato.
:]
#5
Posted 13/07/2004, 02:26
DESCULPA!
Deu problema na interface entre a cadeira e o teclado mesmo... :\
O script para teste dado por Stone Rock, não tinha funcionado mesmo, mas agora antes de desconectar, resolvi tentar uma última vez, e funcionou, aparece a mensagem dizendo que NET::SMTP está instalado corretamente no servidor...
Mas o script que eu apresentei não funciona :\
O que pode ser agora???
Ou se pudesse me apresentar um script, que envia email, o mais simples possível, só a parte de enviar email mesmo, o mínimo, que depois eu complemento como quiser...
Algo mínimo como esse que apresentei, se alguém souber o(s) erro(s) daquele que apresentei melhor...
Novamente, OBRIGADO
#6
Whitesnake
Posted 13/07/2004, 16:33
Caso ainda assim tiver dúvidas acesse o PerlDoc que lá possui informações suficientes para o uso correto do módulo Net-SMTP
#7
Posted 14/07/2004, 00:16
Valeu...
#8
Posted 14/07/2004, 02:42
não quer funcionar de jeito nenhum.
bom é uma conta grátis, no http://free.prohosting.com/ e ele deixa claro, na ajuda, que não aceita sendmail nas contas grátis...
Pode ser algo por aí? que o servidor não executa essas funções? devido a ser conta grátis?
Ou já que ele aceitou naquele teste, deveria funcionar o envio de email.
Eu tento chamar o smtp do bol smtp.bol.com.br pra isso e não funciona, no outlook funciona normal :|
Eu to me confirmando em desistir por ora, tentar quando tiver conseguido um servidor decente ...
por que nenhum script funciona, cheguei a testar um que vi aqui no fórum mesmo, que estaria funcionando, da dricadl, mas também nada...
tudo parece indicar que é da hospedagem, mas to só especulando, sou um tanto ignorante nesse assunto :\
Será que é coisa dessa minha hospedagem gratuita?
#9
Whitesnake
Posted 14/07/2004, 14:20
#!/usr/bin/perl
print "Content-type:text/html\n\n";
use CGI::Carp(fatalsToBrowser);
use Net::SMTP;
$smtp = Net::SMTP->new('smtp.cgiclube.net');
$smtp->mail("cgiclube");
$smtp->auth("cgiclube","senha");
$smtp->data();
$smtp->datasend("To: postmaster\n");
$smtp->datasend("\n");
$smtp->datasend("A simple test message\n");
$smtp->dataend();
$smtp->quit;
print "$!";
#10
Posted 15/07/2004, 00:41
Agora não...
Mas também não imprimiu nada como erro...
Eu fiz uns testes aqui...
Primeiro coloquei pra imprimir "o erro foi: $!", no caso da variável de erro, estar vazia, pra ele imprimir algo pelo menos... Um testezinho besta...
Mas também não imprimiu nada...
Coloquei então um print depois de [ print "Content-type:text/html\n\n"; ]
E aí apareceu, daí então intercalei todas as linhas de comando com um print, pra ver até onde imprimiria, onde que parava...
E até antes de chamar a função mail [$smtp->mail("cgiclube");]
ele imprimiu, dali pra diante não apareceu mais nada...
#11
Whitesnake
Posted 15/07/2004, 01:02
#12
Posted 16/07/2004, 00:47
$smtp->auth("cgiclube","senha");
chegou aí parou de imprimir também, mesma coisa...
Alguma outra possibilidade?
Eu já to me conformando, que é coisa dessa hospedagem gratuita que limita... :\
Deve bloquear mesmo...
talvez seja melhor deixar pra tentar de novo, quando eu tiver com um domínio pago mesmo...
Mas obrigado pela ajuda e tempo perdido, de qualquer forma...
#13
Posted 16/07/2004, 09:19
Para usar esse código, pelo prohosting, você tem que saber se o servidor tem esse modulo (use o script abaixo para saber se tem) e usar o smtp de outro site (ex: o do bol >> smtp.bol.com.br).
Script que verifica a existencia de modulos perl em um servidor:
#!/usr/bin/perl use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; ###### CAPTA DADOS POST ######### read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $form{$name} = $value; } ######################### $pag = $form{'pag'}; $modulos = $form{'modulos'}; if($pag eq "") { &index; } if($pag eq "ver") { &ver; } ######################### sub index { print qq~ <CENTER> VERIFICAR A EXISTENCIA DE MODULOS NO SERVIDOR:<P> MODULOS QUE VOCÊ QUER VERIFICAR:<P> <form action="modulos.cgi" method="POST"> <input type="hidden" name="pag" value="ver"> <textarea name="modulos" cols="25" rows="10">Net::IRC Net::SMTP Net::ICQ CGI::push GD LWP::Simple LWP::UserAgent DBI DBD::Mysql DB_File</textarea><p> <input type="submit" value="VERIFICAR"> </form> ~; } ###################### sub ver { my($ERROR); $ERROR = "Detectando a presença de módulos Perl...<HR><BR>\n"; @itens=split(/\n/,$modulos); foreach $kkk (@itens) { eval "use $kkk"; if ($@) { $ERROR .= "$kkk <font color=red>não acessivel</font> para este servidor.<BR><BR>"; } else { $ERROR .= "$kkk <font color=blue>presente</font>.<BR><BR>"; } } $ERROR .= "<HR>\n"; $ERROR .= "<B>Versão do Perl</B>: $]<BR>\n"; $ERROR .= "<B>Rodando em</B>: $^O<BR>\n"; $ERROR .= "<HR>\n"; $ERROR .= "<B>Diretório:</B> $directory<BR>\n"; $ERROR .= "<HR>\n"; $ERROR .= "<B>Variáveis de Sistema:</B><BR>\n"; foreach $key(keys %ENV) { $ERROR .= "<B>$key:</B> <I>$ENV{$key}</I><BR>\n"; } print qq! <BODY BGCOLOR="#e0e0e0" LINK="maroon" VLINK="maroon" TEXT="black"> <CENTER> <TABLE BGCOLOR="white" BORDER="1" CELLPADDING="3" WIDTH=85%><TR><TD> <TABLE BORDER="0" CELLPADDING="3" WIDTH="100%"> <TR BGCOLOR="#cccc99"> <TD> <FONT FACE="Verdana,Arial, Helvetica" SIZE="2" COLOR="#660000"> <b>Sumário de Configuração do Sistema</b> </TD> </TR> <TR> <TD BGCOLOR="#EEEEEE" VALIGN="top"> <FONT FACE="Verdana,Arial, Helvetica" SIZE="2" COLOR="#000000"> $ERROR </FONT> </TD> </TR> </TR> </TABLE> </TD></TR></TABLE> </CENTER> </BODY> !; exit 0; }
Falow
Site >> joaogabriel.org
CGiClube.net >> http://www.cgiclube.net
Vitória Perl Mongers >> http://vitoria.pm.org
#14
Posted 17/07/2004, 00:43
em só o script era hospedado aí no prohosting...
Vou dar uma olhada nesse script que me desse...
valeu...
#15
Posted 17/07/2004, 02:10
http://snow.prohosti...pwd/modulos.cgi
Net::IRC não acessivel para este servidor.
Net::SMTP presente.
Net::ICQ não acessivel para este servidor.
CGI::push não acessivel para este servidor.
GD não acessivel para este servidor.
LWP::Simple presente.
LWP::UserAgent presente.
DBI presente.
DBD::Mysql não acessivel para este servidor.
DB_File presente.
--------------------------------------------------------------------------------
Versão do Perl: 5.008
Rodando em: freebsd
--------------------------------------------------------------------------------
Diretório:
--------------------------------------------------------------------------------
Variáveis de Sistema:
SCRIPT_NAME: /edpwd/modulos.cgi
SERVER_NAME: snow.prohosting.com
HTTP_REFERER: http://snow.prohosti...pwd/modulos.cgi
SERVER_ADMIN: webmaster@prohosting.com
HTTP_ACCEPT_ENCODING: gzip, deflate
HTTP_X_FORWARDED_SERVER: proxy3.free.prohosting.com
REQUEST_METHOD: POST
CONTENT_LENGTH: 179
HTTP_ACCEPT: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*
SCRIPT_URI: http://snow.prohosti...pwd/modulos.cgi
SCRIPT_FILENAME: /usr/home/web/e/edpwd/modulos.cgi
SERVER_SOFTWARE: Apache/2.0.48 (Unix)
HTTP_MAX_FORWARDS: 10
QUERY_STRING:
REMOTE_PORT: 57684
HTTP_USER_AGENT: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)
SERVER_PORT: 80
HTTP_ACCEPT_LANGUAGE: pt-br
REMOTE_ADDR: 200.102.234.241
CONTENT_TYPE: application/x-www-form-urlencoded
SERVER_PROTOCOL: HTTP/1.1
HTTP_X_FORWARDED_HOST: snow.prohosting.com
HTTP_X_FORWARDED_FOR: 200.102.234.241
PATH: /bin:/usr/bin
REQUEST_URI: /edpwd/modulos.cgi
GATEWAY_INTERFACE: CGI/1.1
SERVER_ADDR: 65.113.119.133
SCRIPT_URL: /edpwd/modulos.cgi
DOCUMENT_ROOT: /usr/local/apache2/htdocs
HTTP_HOST: snow.prohosting.com
O que se pode concluir?
Bom o NET::SMTP tá presente, como já tinha apontado o teste que o Stone Rock, me deu aqui...
Eu tento acessar o smtp do bol mesmo, sempre foi o que tentei...
$smtp = Net::SMTP->new('smtp.bol.com.br');
E apesar de toda ajuda que já recebi aqui, nada faz funcionar...
que pode ser agora?
obrigado...
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)