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)










