WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   perl-mailversand (http://www.wcm.at/forum/showthread.php?t=29608)

Who-T 03.09.2001 18:24

perl-mailversand
 
ich hätt eine bitte an alle programmierer hier

ich bräucht ein script, dass unter übergabe von namen, mailadresse, text und subject ein mail versendet an diese mailadresse.

ich hab zwar ein script vorliegen, allerdings ist dies etwas schwer zu verstehen, wenn man keine ahnung davon hat.


falls irgendwer zeit dafür hat, könntet ihr so ein script hier posten, wenn möglich mit kommentaren, damit ich das verstehe.
in php wärs eine zeile, über perl scheints etwas komplizierter zu sein.

snowman 03.09.2001 20:21

irgendein formmail.

hier gibt es hunderte: http://cgi.resourceindex.com/Program...rm_Processing/

welches hast du denn, und was ist funkt nicht?

gruss,
snowman

Who-T 03.09.2001 20:27

#!/usr/bin/perl

#################################################
# #
# POSTFORM: VERSION 1.0 #
# #
# Copyright: NETWAY AG #
# #
#################################################

# Define some constants

$mailprog = '/usr/lib/sendmail';

# Get the input
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

# Split the name-value pairs
@pairs = split(/&/, $buffer);

foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);

# Un-Webify plus signs and %-encoding
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

# Stop people from using subshells to execute commands
# Not a big deal when using sendmail, but very important
# when using UCB mail (aka mailx).
# $value =~ s/~!/ ~!/g;

# Uncomment for debugging purposes
# print "Setting $name to $value

";

$FORM{$name} = $value;
}

# Now send mail to $recipient

open (MAIL, "|$mailprog $FORM{'h_mailto'}") || die "Can't open $mailprog!\n";
print MAIL "From: noreply\@domain.xxx\n";
print MAIL "Subject: $FORM{'h_subject'}\n\n";

foreach $key (sort(keys(%FORM)))
{
print MAIL "$key: $FORM{$key}\n\n";
}

#print MAIL "Server protocol: $ENV{'SERVER_PROTOCOL'}\n";
#print MAIL "Remote host: $ENV{'REMOTE_HOST'}\n";
#print MAIL "Remote IP address: $ENV{'REMOTE_ADDR'}\n";
close (MAIL);

if ($FORM{'h_successurl'} ne "") {
print "Location: $FORM{'h_successurl'}\n\n";

} else {
print "Content-type: text/html\n";
print "The message has been sent!

";
print "<A HREF=\"$ENV{'HTTP_REFERER'}\">Back!</A>

";
}



wie man sieht, von netway programmiert
ich bin jetzt grad dabei, es so umzubauen, dass es für mich passt, allerdings hatte ich ständig n internal server error, auch wenn ich das script auf die erste zeile reduziere.

hab dann mal probiert, die variablennamen zu ändern, das geht noch, sobald ich aber eigene variablen einbaue, hab ich den error
wieder

die daten werden von einem formular übertragen.
so ungefähr hab ich zwar eine ahnung wies funkt, allerdings sind mir die errors etwas schleierhaft

ich post halt mein derzeit modifiziertes auch noch rein:



#!/usr/bin/perl

# Define some constants

$mailprog = '/usr/lib/sendmail';

# Get the input
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

# Split the name-value pairs
@pairs = split(/&/, $buffer);

foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);

# Un-Webify plus signs and %-encoding
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

# Stop people from using subshells to execute commands
# Not a big deal when using sendmail, but very important
# when using UCB mail (aka mailx).
# $value =~ s/~!/ ~!/g;

# Uncomment for debugging purposes
# print "Setting $name to $value

";

$FORM{$name} = $value;
}

# Now send mail to $recipient

open (MAIL, "|$mailprog $FORM{'mail'}") || die "Can't open $mailprog!\n";
print MAIL "From: $FORM{'senderMail'}\n";
print MAIL "Subject: $FORM{'subject'}\n\n";

print MAIL "$FORM{'text'}\n\n";


#print MAIL "Server protocol: $ENV{'SERVER_PROTOCOL'}\n";
#print MAIL "Remote host: $ENV{'REMOTE_HOST'}\n";
#print MAIL "Remote IP address: $ENV{'REMOTE_ADDR'}\n";
close (MAIL);

if ($FORM{'h_successurl'} ne "") {
print "Location: $FORM{'h_successurl'}\n\n";

} else {
print "Content-type: text/html\n";
print "The message has been sent!

";
print "<A HREF=\"$ENV{'HTTP_REFERER'}\">Back!</A>

";
}

Who-T 03.09.2001 20:30

ahja, hab ich vergessen, meine version wirft zwar den fehler aus, funkt allerdings (sprich mail wird versendet)


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag