PERL - wysyłanie danych pocztą elektroniczną

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
magduska
Posty: 4
Rejestracja: śr mar 26, 2003 2:41 pm
Lokalizacja: Łódź
Kontakt:

PERL - wysyłanie danych pocztą elektroniczną

Post autor: magduska »

Witam

Mam skrypt .pl, który pobiera dane z formularza i powinien wysłać je dalej pocztą elektroniczną. Mam zainstalowany serwer Apache oraz program Sendmail do WIndowsa ale niestety skrypt nie działa tzn. nie przesyła danych.

Nie wiem gdzie tkwi błąd ale przypuszczam, że w konfiguracji Sendmaila.
Czy ktoś wie coś na ten temat i mógłby się tym ze mną podzielić?

Z góry dziękuję. :wink:
Panczo
Nowy
Nowy
Posty: 42
Rejestracja: śr lip 09, 2003 11:37 pm
Lokalizacja: Sosnowiec

Re: PERL - wysyłanie danych pocztą elektroniczną

Post autor: Panczo »

Kurcze dawno nie używałem Perla, ale znalazłem dla Ciebie swój stary skrypt wysyłający mejla na podstawie danych z formularza wkleje całość i jak masz jakieś pytania to pytaj:

Kod HTML formularza:

Kod: Zaznacz cały

<form name="form" method="POST" action="/cgi-bin/pytania/odbior.pl"
onSubmit="return czek()">
  <div align="center"><center><table border="0" width="80%">
    <tr>
      <td width="19%" align="right"><strong><font face="Arial">Pytanie:</font></strong></td>
      <td width="82%"><textarea rows="2" name="pytanie" cols="81"></textarea></td>
    </tr>
    <tr>
      <td align="right" width="19%"><strong><font face="Arial">Firma:</font></strong></td>
      <td align="left" width="82%"><input type="text" name="firma" size="35"></td>
    </tr>
    <tr>
      <td align="right" width="50%"><strong><font face="Arial">Miejscowo¶ć:</font></strong></td>
      <td align="right" width="50%"><strong><font face="Arial"><div align="left"><p></font></strong><input
      type="text" name="miejscowosc" size="35">
        </div>
      </td>
    </tr>
    <tr>
      <td width="19%" align="right"><strong><font face="Arial">Nazwisko i Imię:</font></strong></td>
      <td width="82%"><input type="text" name="imie" size="35"></td>
    </tr>
    <tr>
      <td width="19%" align="right"><strong><font face="Arial">E-mail:</font></strong></td>
      <td width="82%"><input type="text" name="email" size="35"></td>
    </tr>
  </table>
  </center></div><div align="center"><center><p><input type="submit" value="Wy¶lij"
  name="wy¶lij"><input type="reset" value="Czy¶ć" name="czysc"></p>
  </center></div>
</form>
Skryp odbior.pl:
[php]
#!/usr/bin/perl

#czytanie danych wejsciowych

$dlugosc = $ENV{'CONTENT_LENGTH'};
read (STDIN, $dane, $dlugosc);

#przypisywanie danych wejsciowych do zmiennych

$dane =~ s/\+/ /g;
@baza1 = split (/&/, $dane);
($pole, $pytanie) = split (/=/, $baza1[0]);
($pole, $firma) = split (/=/, $baza1[1]);
($pole, $miejscowosc) = split (/=/, $baza1[2]);
($pole, $imie) = split (/=/, $baza1[3]);
($pole, $email) = split (/=/, $baza1[4]);

#kodowanie danych do mejla (na ISO-8895-2)

$firma =~ s/%([\dA-Fa-f][\dA-Fa-f])/pack("C",hex ($1))/eg;
$imie =~ s/%([\dA-Fa-f][\dA-Fa-f])/pack("C",hex ($1))/eg;
$miejscowosc =~ s/%([\dA-Fa-f][\dA-Fa-f])/pack("C",hex ($1))/eg;
$email =~ s/%([\dA-Fa-f][\dA-Fa-f])/pack("C",hex ($1))/eg;
$pytanie =~ s/%([\dA-Fa-f][\dA-Fa-f])/pack("C",hex ($1))/eg;

#wysylanie mejla do biura z zawiadomieniem o zadaniu pytania

$sendmail = "/usr/sbin/sendmail -t";
open ( MAIL, "| $sendmail") || die "Content type: text/plain\n\n Nie da rady mejla...";
print MAIL "From: $email\n";
print MAIL "Subject: PYTANIA-STRONA-INTERNET\n";
print MAIL "To: login\@jakas.tam.domena\n";
print MAIL "Content-type: text/html \n\n";
print MAIL "<HTML>\n<BODY>\n";
print MAIL "Pytanie zadal: <b>", $imie," <br></b>z firmy <b>", $firma,"</b><br>\n";
print MAIL "Z miasta <b>", $miejscowosc," </b><br>E-mail: <b>", $email,"</b><br>\n";
print MAIL "<b>Pytanie:</b><br><i> ", $pytanie,"</i></body>\n</html>";
close MAIL;

#wyswietlanie potwierdzenia

open PLIK, "/var/www/html/potwierdzenie.htm" || die "Conatent-type: text/plain\n\n Nie mozna otworzyc bazy danych: $!";
print "Content-type: text/html\n\n";
while ($linia = <PLIK>) {
print $linia;
}

[/php]

Skrypt chodzi na Linuxie RedHut9 + Apache + Exim
Wnoskuje że masz to wszystko na Windowsie, więc będziesz musiała zmienić ścieżke do sendmaila.
magduska
Posty: 4
Rejestracja: śr mar 26, 2003 2:41 pm
Lokalizacja: Łódź
Kontakt:

Wysyłanie danych pocztą e-mail

Post autor: magduska »

Dzięki za odpowiedź. Jak tylko wypróbuję to opiszę efekt.
Sądziłam, że Perl jest najlepszy do obsługi formularzy.
Czyżbym się myliła? :o
Panczo
Nowy
Nowy
Posty: 42
Rejestracja: śr lip 09, 2003 11:37 pm
Lokalizacja: Sosnowiec

Re: PERL - wysyłanie danych pocztą elektroniczną

Post autor: Panczo »

Wiesz Perl się ciagle sprawdza i działa bez zarzutu, jednak lepszym rowiązaniem IMHO jest zastosowanie PHP - języka stworzonego do celów WWW, poza tym mało osób używa już Perla. PHP jest szybszy od skryptów CGI, lub jeżeli uzywasz Windowsa, to proponuje zainstalowanie IIS 6.0 i zabawę w asp.net to taka alternatywa dla PHP według Microsoftu. Nie wiem jakie masz doświadczenie programistyczne, ale w asp, możesz używać VB lub C#, także jeśli miałaś stycznośc z visualbasiciem lub z C++ to nie powinnaś mieć problemów ;)
magduska
Posty: 4
Rejestracja: śr mar 26, 2003 2:41 pm
Lokalizacja: Łódź
Kontakt:

Re: PERL - wysyłanie danych pocztą elektroniczną

Post autor: magduska »

Dzięki Pancho :)

Na razie asp. net jest dla mnie czarną magią. Nie programowałam w C ale trochę w Delphi. Czy IIS 6.0 jest możliwy do ściągnięcia bezpłatnie? :?:
Panczo
Nowy
Nowy
Posty: 42
Rejestracja: śr lip 09, 2003 11:37 pm
Lokalizacja: Sosnowiec

Re: PERL - wysyłanie danych pocztą elektroniczną

Post autor: Panczo »

Tak jest to serwer darmowy, jeżeli masz windowsa 2000 to w Instalatorze Windows musisz go do instalować, po polsku to się chyba nazywa Internetowe Usługi Informacyjne, lub podobnie...
Po szczegóły zapraszam na strony microsoftu:
http://www.microsoft.com/iis
magduska
Posty: 4
Rejestracja: śr mar 26, 2003 2:41 pm
Lokalizacja: Łódź
Kontakt:

Re: PERL - wysyłanie danych pocztą elektroniczną

Post autor: magduska »

Zostawię go sobie na później...
Dzięki. :)
ODPOWIEDZ