Perl & Sendmail: Eine Datei als Attachment anhängen?
GT
- perl
Hi,
also ich habe mir ein Scriptchen geschrieben, was sich einige Daten (Name, MailAddy etc.) aus einem Formular holt && mit dem man via Formular (HTTP) eine Datei hochladen kann (wird beim absenden hochgeladen).
Soweit so gut, nur sollen die Formulardaten && die hochgeladene Datei als Email (via SENDMAIL) verschickt werden. Das mit den Formulardaten ist kein Problem, nur wie sage ich sendmail mit Perl das es die eben hochgeladene Datei als Attachmend an die Mail hängen soll!?
Sorry ich kenn mich mit UNIX nicht sonderlich aus (ja ja ich weiß...) daher auch nicht mit diesem sendmail.
Kann mir jemand aus der Patsche helfen?
merci
mfg
GT
Hi,
Soweit so gut, nur sollen die Formulardaten && die hochgeladene Datei als Email (via SENDMAIL) verschickt werden. Das mit den Formulardaten ist kein Problem, nur wie sage ich sendmail mit Perl das es die eben hochgeladene Datei als Attachmend an die Mail hängen soll!?
Sorry ich kenn mich mit UNIX nicht sonderlich aus (ja ja ich weiß...) daher auch nicht mit diesem sendmail.
dazu brauchst Du auch keine Kenntnisse über Unix oder sendmail (damit alleine geht's übrigens nicht), sondern einfach nur das Perl-Modul MIME::Lite. Du findest es (wie immer) unter http://www.cpan.org/, Doku ist (wie immer) dabei.
Vielleicht hilft Dir parallel dazu auch das Modul Mail::Mailer.
Cheatah
Besten Dank erstmal!
Ähm kann man das auch ohne Modul coden? Es geht darum das ich nicht unbedingt jeden Provider überzeugen kann dieses Modul zu installieren.
Gibt es eine "manuelle" Möglichkeit solche Daten als Attachment zu verschicken und spielt da ggf. die sendmail Version eine Rolle?
mfg
GT
Hi,
Ähm kann man das auch ohne Modul coden?
natürlich. Schau Dir "einfach" an, was das Modul macht, und mach es nach. Der Quellcode ist Freeware.
Es geht darum das ich nicht unbedingt jeden Provider überzeugen kann dieses Modul zu installieren.
In
perldoc perlmodinstall
erfährst Du, wie Du selbst Module installieren kannst.
Cheatah
Hi,
Ähm kann man das auch ohne Modul coden?
natürlich. Schau Dir "einfach" an, was das Modul macht, und mach es nach. Der Quellcode ist Freeware.
Es geht darum das ich nicht unbedingt jeden Provider überzeugen kann dieses Modul zu installieren.
In
perldoc perlmodinstall
erfährst Du, wie Du selbst Module installieren kannst.
Cheatah
hi,
meist genügt es auch, die moduldateien, die benötigt werden (stehen bei der lokalen installation im ordner 'blib', des quell-vertzeichnisses) auf den server zu kopieren, und in den perlscripts dieses Verzeichnis vor dem 'use' bzw. 'require' entsprechen bekanntzugeben.
also:
angenommen es gibt ein verzeichnis 'lib' in dem verzeichnis, wo auch das script liegt.
dann sollte Dein Perl-script so beginnen:
#!/pfad/zum/perl
BEGIN
{
push @INC, "./lib";
}
use MODUL::NAME;
...
hier geht's weiter wie gehabt.
wichtig ist nur der BEGIN-Block, weil das Array @INC _muß_ vor dem 'use' verändert werden, weil use nämlich beim kompilieren des scripts ausgewertet wird.
bei 'require' ist das nicht so, weil das wird nur ausgeführt, wenn das programm in der ausführung auch wirklich dort vorbei kommt.
es gibt da noch ein paar unterschiede, aber das steht alles in der Doku ('perlfunc').
wenn Du es so machst, dann solltest Du aber trotzdem, der fairness halber, den Provider darüber informieren.
bis dann,
klaus
Besten Dank euch beiden!
my regards
GT
Hi!
BEGIN
{
push @INC, "./lib";
}
Kleine Optimization:
use lib ('./lib');
Das ist dann aber kein push, sondern ein unshift. Das hat nebenbei den Vorteil, das evtl. vorhandene eigene Module in ./lib bevorzugt geladen werden, statt der auf dem Rechner installierten Standardmodule eben. Ich verwende das, um gepatchte Versionen der Standard-Libs einzubinden (natuerlich sollte ich meine Aenderungen nicht in der Perl-Installation selbst vornehmen, andere wollen die Module ja auch noch benutzen).
So long
hi,
probier doch mal die Perl-Module die sich mit dem Thema beschäftigen
Net::SMTP,use MIME::Entity
damit kannst Du das direkt in perl erledigen, ohne irgendeine system-commands. und es funktionert auch unter anderen Betriebsystemen gleich.
klaus
ps.: und frag jetzt nicht 'und wie geht das dann??' _bevor_ Du die dokumentationen gelesen hast