Avatar billede tyfos Nybegynder
22. december 2000 - 19:08 Der er 15 kommentarer og
1 løsning

Script der sender(email) tekst fra MySQL database

Jeg mangler et script der, hver gang det bliver kørt(automatisk af serveren), sender en ny \"tekst\" fra min MySQL database til en bestemt e-mail adresse.

Nogen der kan Hjælpe?
Avatar billede erikjacobsen Ekspert
22. december 2000 - 19:35 #1
Jah, det er da vist ikke så slemt. Men du kører vel på en Unix-lignende maskine - ikke?
Avatar billede erikjacobsen Ekspert
22. december 2000 - 20:21 #2
Ok - her er et eksempel, der kører på en Unix-maskinen. Det er en hurtig
kombination af et par scripts jeg havde liggende. Jeg kører det fra kommando-
linien som    perl scriptnavn.pl  - altså ikke som et CGI-script. Er det inspiration
nok?


#!/usr/bin/perl -w
use strict;
use DBI;
use Mail::Send;

my $mailprog = Mail::Send->new(\'to\'=>\'modtager@modtager.xxx\',\'subject\'=>\'hej\');
my $fh = $mailprog->open(\'sendmail\');

my $dbh = DBI->connect( \'dbi:mysql:DINDATABASE;host=localhost\', \'DINBRUGER\', \'DITPASSWORD\') ||
die \"No connection\\n\";

my $sth = $dbh->prepare( \'SELECT * FROM fdage\' ) || die \"Error in prepare: $DBI::errstr\\n\";

$sth->execute || die \"Error in execute: $DBI::errstr\\n\";

while (my @row = $sth->fetchrow_array){
  print $row[0].\" \".$row[1].\" \".$row[2].\" \".$row[3]. \"\\n\";
  print $fh $row[0].\" \".$row[1].\" \".$row[2].\" \".$row[3]. \"\\n\";
}

$sth->finish;
$dbh->disconnect;
$fh->close;
Avatar billede tyfos Nybegynder
27. december 2000 - 19:23 #3
Kan du ændre det til Sendmail?
Så ville det være perfekt, har ikke selv tjek på det.
Avatar billede tyfos Nybegynder
27. december 2000 - 19:24 #4
Altså programmet SendMail til at sende med?
Avatar billede erikjacobsen Ekspert
27. december 2000 - 23:07 #5
Den bruger vel egentlig sendmail, omend det er pakket lidt ind i
et par Perl-moduler. Kan du køre ovenstående?
Avatar billede tyfos Nybegynder
28. december 2000 - 16:48 #6
jeg får denne fejl:
Can\'t locate Mail/Send.pm in @INC (@INC contains: /usr/local/lib/perl5/5.00503/i
386-bsdos /usr/local/lib/perl5/5.00503 /usr/local/lib/perl5/site_perl/5.005/i386
-bsdos /usr/local/lib/perl5/site_perl/5.005 .) at orgvers.pl line 4.
BEGIN failed--compilation aborted at orgvers.pl line 4.
Avatar billede erikjacobsen Ekspert
28. december 2000 - 19:39 #7
Okay, ja, men man kan også gøre det direkte med sendmail ... det kan
man da. Er det et webhotel, hvor du ikke har kontrol over hvad der er
installeret, eller kunne du faktisk installere den der Send.pm ?

Jeg prøver lige at få mit script til at køre direkte med sendmail... Det tager
lige lidt tid - altså inden jeg får tid ;)
Avatar billede erikjacobsen Ekspert
28. december 2000 - 20:00 #8
Tjah, der er jo næsten nemmere ;-)

#!/usr/bin/perl -w
use strict;
use DBI;

open(F,\"|/usr/lib/sendmail\") || die(\"Sendmail not found\");

print F \"To: bum\\@bumbum.bum\\n\";
print F \"Subject: Hejsa\\n\";
print F \"From: bam\\@bambam.bam\\n\";

print F \"\\n\";

my $dbh = DBI->connect( \'dbi:mysql:db12041a;host=localhost\', \'us12041a\', \'none\') ||
die \"No connection\\n\";

my $sth = $dbh->prepare( \'SELECT * FROM fdage\' ) || die \"Error in prepare: $DBI::errstr\\n\";

$sth->execute || die \"Error in execute: $DBI::errstr\\n\";

while (my @row = $sth->fetchrow_array){
  print $row[0].\" \".$row[1].\" \".$row[2].\" \".$row[3]. \"\\n\";
  print F $row[0].\" \".$row[1].\" \".$row[2].\" \".$row[3]. \"\\n\";
}

$sth->finish;
$dbh->disconnect;

close(F);
Avatar billede tyfos Nybegynder
28. december 2000 - 22:01 #9
ok...jeg er ked af at blive ved med at forstyrre ;)
Nu får jeg denne fejl:
BRUGERNAVN... Recipient names must be specified

Avatar billede tyfos Nybegynder
28. december 2000 - 22:06 #10
og:
Use of uninitialized value at bibeltest.pl line 23.
1    
Use of uninitialized value at bibeltest.pl line 24.
jesus4ev... Recipient names must be specified
Use of uninitialized value at bibeltest.pl line 23.
2
Use of uninitialized value at bibeltest.pl line 24.
Avatar billede erikjacobsen Ekspert
28. december 2000 - 22:47 #11
Hmm, hvilken Perl version kører du?

Du forstyrrer skam ikke ;-)
Avatar billede tyfos Nybegynder
28. december 2000 - 22:50 #12
Perl5.005_03
Avatar billede erikjacobsen Ekspert
28. december 2000 - 23:04 #13
5.005_02 her - skulle ikke betyde noget..... Lad os lige se dit script. Du kan
evt. maile det til mig på min email (klik på mit navn til venstre).
Avatar billede erikjacobsen Ekspert
29. december 2000 - 00:59 #14
ok, der er 2 ting du skal prøve:

  open(F,\"|/usr/lib/sendmail bum\\@bumbum.bum\") || die(\"Sendmail not found\");

i stedet for linien med print F \"To: ....\";

og så skal du nok ikke referere til flere felter med $row[0], $roe[1], ... end du
faktisk har i tabellen.

ok?
Avatar billede tyfos Nybegynder
29. december 2000 - 01:02 #15
Perfekt!!!!
Takker....
Avatar billede erikjacobsen Ekspert
29. december 2000 - 01:11 #16
Det tog sin tid - men det lykkedes!!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester