perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 29
Click for quality!




10.02.2012 / 20:39

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  CGI: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragAbsender anzeigen lassen-Wie?
Seitenanfang
Hallo, ich verwende den Mailer, der auf perlunity.de als freeware angeboten wird. Es funktioniert alles gut, nur mit dem "Mail von" habe ich Schwierigkeiten. In meinem Formular gibt es kein E-Mail-Pflichtfeld, aber ein Nachname-Feld, das ausgefüllt werden muss. Ich möchte gerne, dass mir der Nachname im "Mail von ..." angezeigt wird. Momentan wird komischerweise meine E-Mail-Adresse angezeigt, die sollte aber nur im Feld "An" stehen. Ich hab den halben Tag herumprobiert (ohne Erfolg)und bitte euch um Hilfe.

Danke!
Roland

Datum: 12.03.2006-22:03

Beitragre: Absender anzeigen lassen-Wie?
Seitenanfang
Zeig doch mal etwas Code...

Datum: 13.03.2006-13:55

Beitragre: Absender anzeigen lassen-Wie?
Seitenanfang
Du musst die to-Zeile suchen und dort hinten in Klammern die Variable mit dem Name schreiben

print MAIL "To: mail@mail.de ($MAILFORM->{NAMESFELD}) ...

versuch das mal, wenn es nicht klappt schaue ich nochmal genauer ins Script.

Mfg
Marky

Datum: 13.03.2006-20:51

Beitragre: Absender anzeigen lassen-Wie?
Seitenanfang
Hallo, danke für eure Hilfsbereitschaft und eure Tipps. Aber ich weiß nicht genau, bei welchem "to" ich das eintragen muss. Mein Namensfeld heißt "Nachname"

Hier der Code:

#!/usr/bin/perl
############################################################################
#
# (c) Markus Wolf, 1998-2003
#
############################################################################
#
# mailer.cgi
# COPYRIGHT NOTICE
# Copyright 2002 Markus Wolf
# All Rights Reserved.
#
# EMail : support@perlunity.de
# URL : http://www.perlunity.de
#
# mailer.cgi darf von jedermann kostenlos benutzt und geändert werden,
# solange dieser Copyright-Verweis und die restlichen Kommentare erhalten
# bleiben. Mit dem Einsatz dieses Skripts akzeptieren Sie, daß Markus Wolf
# von jeglicher Haftung und Gewährleistung hinsichtlich des Einsatzes
# befreit ist.
#
# Der Verkauf und die Verbreitung dieses Skripts, auch in modifizierter
# Form, ist ohne vorherige Absprache ausdrücklich untersagt. Mit anderen
# Worten: Bitte fragen Sie mich, bevor Sie versuchen, mit meinem Skript
# Geld zu verdienen.
#
# Um dieses Skript über das Internet oder irgendein anderes Medium
# weiterzuverbreiten, benötigen Sie vorher meine Erlaubnis. In jeden
# Fall müssen der Copyright-Verweis und die restlichen Kommentare
# erhalten bleiben.
#
############################################################################

############################################################################
# Systemeinstellungen
############################################################################

#Wechsel in das aktuelle Verzeichnis
$0 =~ /^(.*)[\/\\].*/ && chdir ($1) ;

#Module
use lib "libs/" ;
use strict ;
use CGI::Carp qw(fatalsToBrowser) ;
use Tie::IxHash ;
use Net::SMTP ;

############################################################################
# Variablendefinition (müssen alle angepaßt werden)
############################################################################

#Sendmail-Pfad (Unix)
my $mailprog = "/usr/sbin/sendmail" ;

#SMTP-Server (Windows) - nur eintragen, wenn über smtp verschickt werden
my $smtpserver = "" ;

#SMTP-Debugging (0-nein / 1-ja)
my $smtpdebug = 0 ;

#SICHERHEIT : Hostnamen die Mail empfangen dürfen -> recipient-Parameter
my @recihosts = ( 'meinedomain.at' , '' , '' ) ;

#Subjekt der Mail, wenn das Hidden-Feld nicht definiert ist
my $stdsub = "Subject: ";

#Zeitverschiebung in Stunden (+ oder -)
my $zeitverH = +1 ;

#Offline-Modus zum Testen (1=Mail speichern/0=Mail verschicken)
my $offline = 0 ;

#File-Locking (Win9x=0/sonst=1)
my $lock = 0 ;

#############################################################################
# Hauptprogramm starten
#############################################################################

&send_mail() ;

#############################################################################
# Mail verschicken
#############################################################################

sub send_mail {

my $datum=&date_time() ;

###
#Formfelder parsen

my ($MAILHEADER,$MAILFORM,$fehlfeld,$mussfelder)=&parse_form() ;

###
#Fehlercode verarbeiten

unless ($fehlfeld==1) {

###
#Mail verschicken

my ($mailcc,$mailbcc) ;
my $referer = ($ENV{'HTTP_REFERER'}||'kein REFERER vorhanden!') ;
my $absendermail = ($MAILFORM->{$MAILHEADER->{'sender_email'}}||$MAILHEADER->{'recipient'}) ;
my $mailsub = $stdsub ;
my $mailheader = "To: $MAILHEADER->{'recipient'}\n";

$mailheader .= "From: $absendermail\n";

if ($MAILHEADER->{'recipient_cc'}) {
$mailcc = $MAILHEADER->{'recipient_cc'} ;
$mailheader .= "Cc: $MAILHEADER->{'recipient_cc'}\n";
}

if ($MAILHEADER->{'recipient_bcc'}) {
$mailbcc = $MAILHEADER->{'recipient_bcc'} ;
$mailheader .= "Bcc: $MAILHEADER->{'recipient_bcc'}\n";
}

if ($MAILHEADER->{'subject'}) {
$mailsub = $MAILHEADER->{'subject'} ;
}

$mailheader .= "Subject: $mailsub\n\n";
my $mailtext = "-" x 72 . "\n";
$mailtext .= "Die Anmeldung wurde am $datum verschickt\n";
$mailtext .= "-" x 72 . "\n\n";

foreach my $fn (keys %{$MAILFORM}) {

$mailtext .= "[$fn]\n" ;
$mailtext .= "$MAILFORM->{$fn}\n\n" ;
}

$mailtext .= "-" x 72 . "\n";
$mailtext .= "Script wurde von der IP $ENV{'REMOTE_ADDR'} aufgerufen:\n$referer\n" ;
$mailtext .= "-" x 72 . "\n";


###
#Mail verschicken

&mailing($MAILHEADER->{'recipient'},$absendermail,$mailcc,$mailbcc,$mailsub,$mailheader,$mailtext) ;


###
#Mailadresse speichern

if ($MAILFORM->{$MAILHEADER->{'sender_email'}}) {

open (DAT , ">> data/emails.data") ;
flock(DAT,2) if ($lock==1) ;
print DAT "$MAILFORM->{$MAILHEADER->{'sender_email'}}\n" ;
close (DAT) ;
}

###
#Counter

open (COUNT , "+< data/emails.counter") ;
flock(COUNT,2) if ($lock==1) ;
my $counter=<COUNT>;
seek(COUNT,0,0);
$counter++ ;
print COUNT $counter ;
close (COUNT) ;


###
#Export, wenn definiert

if ($MAILHEADER->{'export_file'} && $MAILHEADER->{'export_fields'}) {

my $export ;

foreach my $ex ( split(/,/,$MAILHEADER->{'export_fields'}) ) {

$MAILFORM->{$ex} =~ s/(\n|\012|\015)+/ /g ;
$export .= $MAILFORM->{$ex}.";" ;
}

open (DAT , ">> data/$MAILHEADER->{'export_file'}") ;
flock(DAT,2) if ($lock==1) ;
print DAT qq($export\n) ;
close(DAT) ;
}
}

###
#Rückgabeseite nach der Mailzustellung

&return_html($fehlfeld,$mussfelder,$MAILHEADER->{'redirect'}) ;

}

#############################################################################
# Formulardaten werden ausgelesen
#############################################################################

sub parse_form {

my (%MAILHEADER,%MAILFORM) ;
my (@required,$buffer,$mussfelder) ;
my $fehlfeld=0 ;

tie %MAILHEADER , "Tie::IxHash" ;
tie %MAILFORM , "Tie::IxHash" ;

###
#Buffer lesen

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

###
#Werte verarbeiten

foreach my $paar (split(/&/, $buffer)) {

my ($feldnamen, $wert) = split(/=/, $paar);

$feldnamen =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$feldnamen =~ tr/+/ /;

$wert =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$wert =~ tr/+/ /;
$wert =~ s/<!--(.|\n)*-->//g;

if ( $wert && (

$feldnamen eq 'recipient' ||
$feldnamen eq 'recipient_cc' ||
$feldnamen eq 'recipient_bcc' ||
$feldnamen eq 'subject' ||
$feldnamen eq 'redirect' ||
$feldnamen eq 'sender_email' ||
$feldnamen eq 'export_file' ||
$feldnamen eq 'export_fields'
) ) {

$feldnamen =~ s/(\015\012|\015|\012|\n|\r)/ /g ;
$wert =~ s/(\015\012|\015|\012|\n|\r)/ /g ;

$MAILHEADER{$feldnamen} = $wert;

} elsif ($feldnamen eq 'required') {

@required = split(/\|/ , $wert);

} else {

$MAILFORM{$feldnamen} = $wert if ($feldnamen !~ /button/i) ;
}
}

###
#Empfänger-Host checken

my $hosttest1=0 ;
my $hosttest2=0 ;
my $hosttest3=0 ;

foreach my $recihosts (@recihosts) {

if ($MAILHEADER{'recipient'} =~ /$recihosts$/i) {

$hosttest1=1 ;
}

if ($MAILHEADER{'recipient_cc'} && $MAILHEADER{'recipient_cc'} =~ /$recihosts$/i ) {

$hosttest2=1 ;
}

if ($MAILHEADER{'recipient_bcc'} && $MAILHEADER{'recipient_bcc'} =~ /$recihosts$/i ) {

$hosttest3=1 ;
}
}

if ($hosttest1==0) {

$mussfelder = "<font color=\"ff0000\">Mailempfänger nicht zugelassen!</font><br>" ;
$fehlfeld=1 ;
}

if ($hosttest2==0 && $MAILHEADER{'recipient_cc'}) {

$mussfelder = "<font color=\"ff0000\">Mailempfänger (CC) nicht zugelassen!</font><br>" ;
$fehlfeld=1 ;
}

if ($hosttest3==0 && $MAILHEADER{'recipient_bcc'}) {

$mussfelder = "<font color=\"ff0000\">Mailempfänger (BCC) nicht zugelassen!</font><br>" ;
$fehlfeld=1 ;
}

###
#Mussfelder checken

foreach my $require (@required) {

if (!$MAILFORM{$require}) {

$mussfelder.= "<font color=\"ff0000\">$require</font><br>" ;
$fehlfeld=1 ;
}

}

foreach my $require ('recipient','redirect') {

if (!$MAILHEADER{$require}) {

$mussfelder.= "<font color=\"ff0000\">Systemfeld: $require</font><br>" ;
$fehlfeld=1 ;
}

}

###
#Spamcheck

foreach my $key (keys %MAILHEADER) {

if ($MAILHEADER{$key} =~ /\n/) {

$mussfelder.= "<font color=\"ff0000\">Systemfeld: $key (NEWLINE NOT ALLOWED)</font><br>" ;
$fehlfeld=1 ;
}
}

foreach my $key (keys %MAILFORM) {

if ($MAILFORM{$key} =~ /(to|from|cc|bcc)\:\s+/i) {

$mussfelder.= "<font color=\"ff0000\">NOSPAM: $key</font><br>" ;
$fehlfeld=1 ;
}
}

###
#Rückgabe Form-Felder

return(\%MAILHEADER,\%MAILFORM,$fehlfeld,$mussfelder) ;

}

#############################################################################
# Rückgabeseite ausgeben
#############################################################################

sub return_html {

my $fehlfeld=shift ;
my $mussfelder=shift ;
my $redirect=shift ;
my $line ;

###
#Rückgabeseite ausgeben

if ($fehlfeld==1) {

###
#Fehler

print "Content-Type: text/html\n\n" ;

open(RE , "< tmpl/stdfehl.htm") || die "Kann das Fehlertemplate -tmpl/stdfehl.htm- nicht laden !" ;
while ($line=<RE>) {

if ($line =~ /<!--mussfelder-->/i) {
print "$mussfelder";
} else {
print $line ;
}

} close(RE) ;

} else {

###
#Dank-Seite

print "Location: $redirect\n\r\n\r" ;

}

}

############################################################################
# Das eigentliche Mailing ( UNIX/Linux - Sendmail | Windows - SMTP )
############################################################################

sub mailing {

my ($mailto,$mailfrom,$mailcc,$mailbcc,$mailsub,$mailheader,$mailtext) = @_ ;

###
#Absender-Mail checken

unless ($mailfrom =~ /^.*?\@.*?\..*?$/) {

$mailfrom=$mailto ;
}

###
#SMTP-Debug

if ($smtpserver && $smtpdebug==1) {

print "Content-Type: text/html\n\n<pre>" ;
print "$mailto,$mailfrom,$mailsub,$mailheader" ;
}

###
#Mail-Versand

if($offline==1) {

###
#Mail in Datei schreiben (cgi-bin/shop/mail)

open(MAIL,"> ./temp/mail.txt") ;
print MAIL $mailheader ;
print MAIL $mailtext ;
close (MAIL) ;

} else {

if($smtpserver) {

###
#Mail per SMTP unter NT verschicken

my $smtp = Net::SMTP->new( $smtpserver, Hello => $smtpserver , Debug => $smtpdebug );
my $header=qq(To: $mailto\nFrom: $mailfrom\nSubject: $mailsub\n) ;

$smtp->mail($mailfrom);
$smtp->to($mailto , {SkipBad=>1} ) ;
$smtp->to($mailcc , {SkipBad=>1} ) if($mailcc) ;
$smtp->to($mailbcc , {SkipBad=>1} ) if($mailbcc) ;
$smtp->data();
$smtp->datasend($mailheader."\n\n");
$smtp->datasend($mailtext);
$smtp->dataend();
$smtp->quit();


} else {

###
#Mail per SENDMAIL unter Unix verschicken

open(MAIL,"| $mailprog -t") || die "Kann die E-Mail über -$mailprog- nicht verschicken. Es ist eventl. der falsche sendmail-Pfad eingestellt." ;
print MAIL $mailheader ;
print MAIL $mailtext ;
close (MAIL) ;

}
}

}

#############################################################################
# Aktuelles Datum und Uhrzeit zurückgeben
#############################################################################

sub date_time {

my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time+(3600*$zeitverH));

###
#Formatierung

my $datum = sprintf "%02d.%02d.%04d um %02d:%02d" , $mday , $mon+=1 ,$year+=1900 , $hour , $min ;

###
#Rückgabe Datum

return($datum) ;

}

#############################################################################
# ENDE
#############################################################################

Datum: 14.03.2006-09:31

Beitragre: Absender anzeigen lassen-Wie?
Seitenanfang
Hallo, ich bitte euch nochmals um Hilfe.
Könntet ihr nochmal nachschaien?

Danke

Roland

Datum: 16.03.2006-14:39

-






-
-