Thread Mails über Sendmail >Lokal< senden
(14 answers)
Opened by Hoamer at 2008-05-19 17:05
EDIT!: Habe gerade eine andere Idee gehabt, also nach etwas ganz anderem gegooglet und bin dabei auf die Lösung gestoßen, welche ich einen Beitrag vorher angefragt habe -.- (und dabei suche ich IMMER mind. 45 min. nach einer Lösung...)
Habe es folgendermaßen gelöst: bevor ich den Mailversand aufrufe, rufe ich noch die Methode auf, welche die Variablen, die er noch gecachet hat, in die Datei schreibt: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 [...] $dbh->disconnect(); &dateiausgabe(); &mailversand(); sub dateiausgabe { $old_fh = select(FILE); $| = 1; select($old_fh); } ______________ Okay...hier hab ich dann ma ein paar Ausschnitte des Codes, da alles zu viel währe... Bitte teilweise nicht über die Comments wundern...ist nur, da ich die sachen gerne Dokumentiere und es auch später noch gut verstehen möchte... [...] Code (perl): (dl
)
1 2 3 my $dbh = DBI->connect( "$datenbankinformationen","$username","$password") || die "Database connection not made: $DBI::errstr"; my $sql = qq{SELECT sum(e.anzahl) as menge_gesamt, e.spot_id, e.tag, s.name, sp.title, e.anzahl FROM einblendungen e, clients c, standorte s, spots sp where c.id = e.client_id and c.standort_id = s.id and e.spot_id = sp.id and e.tag between '$zeitraumvon' and '$zeitraumbis' and e.spot_id like '$spot_id' group by e.client_id, e.spot_id}; [...] Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 #Textdatei-Handle wird eröffnet open(FILE,">/Users/hoamer/Desktop/$dateiname"); $sth->execute(); while(@ergebnis=$sth->fetchrow_array) { #Überprüfung, ob die Variable zahler=0 ist. Somit gehen wir sicher, dass dies nur einmal geschrieben wird. #Die Ausgabe des Textes geschieht in der Schleife, da man sonst nicht auf bestimmte Werte in der DB zugreifen kann. #In unserem Fall benötigen wir dies für den Namen des Spots. if($zahler==0) { printf FILE "\n\n\n\n\n\n\n\n\nSehr geehrte Damen und Herren,\n\n\n\n\nblabla... Zeitraum vom %s bis zum %s gesendet wurde: \n\n\n", $ergebnis[4], $zeitraumvon, $zeitraumbis; $spotname=$ergebnis[4]; printf FILE "Spots/std. \t Gesamtzahl \t Name\n\n"; } else { } #Auflistung der Werte als gefakete Tabelle (nur wegen der .txt, aber nicht wichtig) if(length($ergebnis[0]) ==1) { $ergebnis[0] =~ s/\Z/ /g } if(length($ergebnis[0]) < 4) { $ergebnis[0] =~ s/\Z/ /g; } else { } #In datenbank sind Zeilenumbrüche vorhanden, welche hier ausgeschlossen werden sollen $ergebnis[1] =~ s/\n+\s//g; $ergebnis[5] =~ s/\n+\s//g; $ergebnis[0] =~ s/\n+\s//g; $ergebnis[3] =~ s/\n+\s//g; $ergebnis[1] =~ s/^\n+//g; $ergebnis[5] =~ s/^\n+//g; $ergebnis[0] =~ s/^\n+//g; $ergebnis[3] =~ s/^\n+//g; $ergebnis[1] =~ s/\n//g; $ergebnis[5] =~ s/\n//g; $ergebnis[0] =~ s/\n//g; $ergebnis[3] =~ s/\n//g; #Ausgabe print FILE $ergebnis[5]."\t\t ".$ergebnis[0]."\t\t ".$ergebnis[3]."\n"; $zahler++; } [...] Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 print FILE "\n\n\nWir Bestätigen, dass das oben genannte Material gesendet wurde.\n\n\n\n\n\nMit freundlichen Grüßen\nVICI Connect"; #handle schließen close(FILE); #View muss wieder aus der tabelle entfernt werden my $sql = qq{DROP VIEW VICIadmin_development.ubergabeview}; my $sth = $dbh->prepare( $sql ); $sth->execute(); #Datenbank-Handle "so, das wars..." $sth->finish(); #Datenbank-Handle wird geschlossen $dbh->disconnect(); &mailversand(); sub mailversand { sleep 15; #Die Datenausgabe kann auch bei "*1" direkt stattfinden, anstatt, dass diese als Attachment gesendet wird. # my $mailtext = "Das ist der Text\nden ich gerne senden wuerde..."; my $sender = new Mail::Sender { smtp => 'mail.gmx.net', from => '546@gmx.de', auth => 'LOGIN', authid => '12345', authpwd => 'jjjjjjjj', on_errors => undef, } or die "Can't create the Mail::Sender object: $Mail::Sender::Error\n"; $sender->MailFile ( { to => $usermails, subject => 'Spotinformationen', msg => "Sehr geehrte Damen und Herren, \n\nblablabla '$spotname' im Zeitraum vom '$zeitraumvon' bis zum '$zeitraumbis'.\n\n\nAnhang:\n$dateiname", file => $dateiname, } ); |