Thread eMail-Formular mit Bild(ern) als Anhang (18 answers)
Opened by Platten-Spieler.de at 2018-07-31 17:28

Platten-Spieler.de
 2018-07-31 17:28
#188703 #188703
User since
2018-07-16
2 Artikel
BenutzerIn
[default_avatar]
Hallo Perl-Spezialisten und -Neards!

ich hab so ziemlich viel gegoogelt, aber finde (auch hier) keine wirklich passende
Antwort auf mein Problem.

Ich betreibe eine Webshop fuer Plattenspielernadeln und Aehnliches.
Da kommt es haeufig vor, dass ein potentieller Kunde mir ein Bild seiner alten Nadel
zumailen will.
Da ich ein (einfaches) eMail-Formular benutze, ist es aber (noch) nicht moeglich, mir
ueber dieses ein oder mehrere Bilder zuzuschicken.

Und das ist das Problem, das ich hier jetzt endlich mal loesen moechte.
Und eben gerne auch in Perl loesen moechte, da ich zwar lange kein Profi in dieser
Sprache bin, aber schon einiges gebastelt habe, was dann auch funktioniert.
Perl ist mir kurz gesagt sympatisch und in PHP moechte ich mich nicht erst gross
einarbeiten muessen, zumal das meiste ja schon steht in Perl.

Also, in meinem Pflichtenheft steht:
- Zusendung eines oder mehrerer jpg-Bilder ueber ein eMail-Formular
- Begrenzung der Zusendung auf dieses Format
- Begrenzung der Zusendung auf 3 Bilder
- Begrenzung der Bildgroesse auf je 2 MB (muss man ja heute leider einkalkulieren..
...und wenn es ginge, waere eine automatische Bildverkleinerung auf 300 KB noch der
absolute Hit!)

Das Formular selbst ist simpel und wird klassisch per Javascript aktiviert.
hier die wichtigste Zeile, die ich mir schon gebastelt habe:
Code (html): (dl )
1
2
3
4
<b>Bild an eMail anhängen:</b><br>
<input type="file" name="uploadBild" multiple=""><br>
<input type="submit" value="Senden" onClick="return validate_form()">
<input type="reset" value="Einträge löschen"></form>


Schoene Gruesse,
Andreas


Das Perl-Script sieht gekuerzt so aus:
(die auf dem Server installierte Perl-Version ist 5.012003)

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
59
60
61
62
63
64
65
#!/usr/bin/perl
#eMailFormular.pl

$Zaehler = 0;
if($ENV{'REQUEST_METHOD'} eq 'GET')
 { $Daten = $ENV{'QUERY_STRING'};
 }
else
 { read(STDIN, $Daten, $ENV{'CONTENT_LENGTH'});
 }
@Formularfelder = split(/&/, $Daten);
foreach $Feld (@Formularfelder) 
 { ($Name, $Wert) = split(/=/, $Feld);
    $Wert =~ tr/+/ /;
    $Wert =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    $Wert =~ s/<!--(.|\n)*-->//g;
    $Wert =~ s/\;/\,/g;
    $Wert =~ s/\n/\ /g;
    $Formular{$Name} = $Wert;
 }
$JetztWert = time();
$JetztZeit = localtime($JetztWert);
@Zeit = split(/ +/,$JetztZeit);
@Uhrzeit = split(/:/,$Zeit[3]);

$Mailprog = "/usr/lib/sendmail";
$MailSubject = "Nadelnachfrage_$Formular{'Vorname'}_$Formular{'Nachname'}";
$SenderVollname = "\"".$Formular{'SenderEmail'}." ".$Formular{'Nachname'}."\"";
$SenderMail = $Formular{'SenderEmail'};
$SenderBrowser = $ENV{'HTTP_USER_AGENT'};
$SenderTrueMail2 = $ENV{'REMOTE_HOST'};
$SenderTrueMail = $ENV{'HTTP_FROM'};
$SenderTrueIP = $ENV{'REMOTE_ADDR'};
$Mailtext = $Formular{'Anfrage'};
$Mailtext =~ s/\n/\ /g;
$Mailtext =~ s/\r/\ /g;
$Mailtext =~ s/\"/\''/g;
$Mailtext =~ s///g;


# # #


$Empfaenger = "Adresse\@Domain.de";
open(MAIL,"|$Mailprog -t") || die;
print MAIL "To: $Empfaenger\n";
print MAIL "From: $SenderMail \n";
print MAIL "Subject: $MailSubject\n\n";
print MAIL "Von:     $SenderVollname\n";
print MAIL "RIP:     ($SenderTrueMail)  $SenderTrueIP  ($SenderTrueMail2)\n";
print MAIL "Vom:     $Zeit[0], $Zeit[2]. $Zeit[1]. $Zeit[4]  ( $Uhrzeit[0]:$Uhrzeit[1] )\n";
print MAIL "\n";
print MAIL "$Formular{'Anrede'} $Formular{'Vorname'} $Formular{'Nachname'}\n";
print MAIL "$Formular{'Strasse'}\n";
print MAIL "$Formular{'PLZ'} $Formular{'Ort'}\n";
print MAIL "$Formular{'Vorwahl'}/$Formular{'Telefon'}\n";
print MAIL "$Formular{'Rueckruf'} Uhrzeit $Formular{'Uhrzeit'}\n";
print MAIL "$Formular{'SenderEmail'}\n";
print MAIL "\n";
print MAIL "Art der Anfrage:   $Formular{'Betreff'}\n";
print MAIL "DSGVO akzeptiert:   $Formular{'Akzept'}\n";
print MAIL "Gegenstand:        $Mailtext \n";
print MAIL "Attachement:        $Formular{'uploadBild'}\n";
print MAIL "\n";
close(MAIL);

Last edited: 2018-07-31 18:26:35 +0200 (CEST)

View full thread eMail-Formular mit Bild(ern) als Anhang