Forenindex » Archiv » Perl und CGI » absender in einem form-mailer

absender in einem form-mailer

pat87
Beiträge gesamt: 581

26. Apr 2004, 18:01
Bewertung:

gelesen: 8646

Beitrag als Lesezeichen
hallo zusammen,

ich verwenda dieses script zum versenden von formulardaten. meine frage: kann ich es so einstellen, dass der absender aus dem formular-feld 'e-mail' verwendet wird?


#!/usr/bin/perl

# -------> SMTP-Programm zum Versenden der Mail:
$Sendmail_Prog = "/usr/lib/sendmail";

# -------> Modul f¸r CGI-Scripts einbinden:
use CGI;

# -------> Modul f¸r CGI-Scripts zum Einlesen der Formulardaten anwenden:
$query = new CGI;
@names = $query->param;

# -------> interne Daten aus den erwarteten hidden-Feldern auslesen:
$delimiter = $query->param('delimiter'); # ---> Begrenzerzeichen zwischen name und value
$mailto = $query->param('mailto'); # ---> Empf‰ngeradresse
$returnhtml = $query->param('return'); # ---> URL f¸r Dankeseite
$subject = $query->param('subject'); # ---> E-Mail-Subject


# -------> Text der E-Mail aus den Formulardaten ermitteln:
$mailtext = "";
foreach(@names) {
$name = $_;
@values = "";
@values = $query->param($name);
if($name ne "mailto" && $name ne "return" && $name ne "subject" && $name ne "delimiter") {
foreach $value (@values) {
$mailtext = $mailtext.$name;
$mailtext = $mailtext.$delimiter;
$mailtext = $mailtext.$value."\n";
}
}
}

# -------> E-Mail versenden:
open(MAIL,"|$Sendmail_Prog -t") || print STDERR "Mailprogramm konnte nicht gestartet werden\n";
print MAIL "To: admin\@pat87.ch\n";
print MAIL "From: formular\@pat87.ch\n";
print MAIL "Subject: $subject\n\n";
print MAIL "$mailtext\n";
close(MAIL);

# -------> Dankeseite an Browser senden:
print "Location: $returnhtml\n\n";

ich wäre für jede antwort froh...

mfg p@
---
mailto:admin@pat87.ch
http://www.pat87.ch/

absender in einem form-mailer

SabineP
Beiträge gesamt: 7586

26. Apr 2004, 18:43
Bewertung:

gelesen: 8644

Beitrag als Lesezeichen
Hallo pat,

1. nenne das Formularfeld vorsichtshalber "email"

In der Variable $absender steht dann der Inhalt des Formularfeldes mit dem Namen "email"

2. In diesem Teil des Scriptes $absender noch hinzufügen:

# -------> interne Daten aus den erwarteten hidden-Feldern auslesen:
$delimiter = $query->param('delimiter'); # ---> Begrenzerzeichen zwischen name und value
$returnhtml = $query->param('return'); # ---> URL für Dankeseite
$subject = $query->param('subject'); # ---> E-Mail-Subject
$absender = $query->param('email'); # ---> Absender


3. In diesem Teil des Scriptes in die From-Zeile die Variable $absender einfügen:

# -------> E-Mail versenden:
open(MAIL,"|$Sendmail_Prog -t") || print STDERR "Mailprogramm konnte nicht gestartet werden\n";
print MAIL "To: admin\@pat87.ch\n";
print MAIL "From: $absender\n";
print MAIL "Subject: $subject\n\n";
print MAIL "$mailtext\n";
close(MAIL);

Gruß Sabine

absender in einem form-mailer

pat87
Beiträge gesamt: 581

26. Apr 2004, 21:10
Bewertung:

gelesen: 8644

Beitrag als Lesezeichen
funktioniert tip top.

noch was: wie und wo kann ich eine feldeingabe erzwingen?
im formular?
im cgi-script?


mfg p@
---
mailto:admin@pat87.ch
http://www.pat87.ch/

absender in einem form-mailer

SabineP
Beiträge gesamt: 7586

26. Apr 2004, 22:51
Bewertung:

gelesen: 8644

Beitrag als Lesezeichen
Am einfachsten geht´s mit Javascript im Formular.
Hier ein Beispiel für das Formularfeld mit dem Namen "email":

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Formular</title>

<script language="javascript" type="text/javascript">

function pruef()
{
if(document.anfrageformular.email.value == ""){
alert("Geben Sie bitte Ihre E-Mail-Adresse ein!");
document.anfrageformular.email.focus();
return false;
}
}

</script>
</head>
<body>
<form method="POST" action="mail.pl" name="anfrageformular" onSubmit="return pruef()">
<input type="text" name="email" size="30" value="">
<input type="submit">
</form>
</body>
</html>

Gruß Sabine

absender in einem form-mailer

pat87
Beiträge gesamt: 581

1. Mai 2004, 16:01
Bewertung:

gelesen: 8644

Beitrag als Lesezeichen
kann ich denn mit diesem script auch 2 oder 3 feld-eingaben erzwingen?


mfg p@
---
mailto:admin@pat87.ch
http://www.pat87.ch/

absender in einem form-mailer

SabineP
Beiträge gesamt: 7586

1. Mai 2004, 16:18
Bewertung:

gelesen: 8644

Beitrag als Lesezeichen
Ja natürlich lassen sich auch mehrere Felder prüfen.
Hier noch ein Feld mit dem Namen "name"

function pruef()
{

if(document.anfrageformular.email.value == ""){
alert("Geben Sie bitte Ihre E-Mail-Adresse ein!");
document.anfrageformular.email.focus();
return false;
}

if(document.anfrageformular.name.value == ""){
alert("Geben Sie bitte Ihren Namen ein!");
document.anfrageformular.name.focus();
return false;
}

}

Gruß Sabine

absender in einem form-mailer

pat87
Beiträge gesamt: 581

8. Mai 2004, 14:02
Bewertung:

gelesen: 8644

Beitrag als Lesezeichen
das hat jetzt nicht direkt mit dem absender zu tun, aber wie kann ich es einstellen, dass es bei jedem mail, das das formular schreibt so heisst:

<name> mit der mail-adresse <email> hat ihnen folgende nachricht gesendet:
<nachricht>

wobei die in den klammern vorhandenen werte aus dem formular gelesen werden...

z.b.

patrick buff mit der mailadresse admin@pat87.ch hat ihnen folgende nachricht gesendet:
hallo patrick, tolle homepage...

natürlich wäre es auch praktisch, dass ich trotzdem als absender die mail-adresse habe (einfachere rückantwort...)

mfg p@
---
mailto:admin@pat87.ch
http://www.pat87.ch/

absender in einem form-mailer

SabineP
Beiträge gesamt: 7586

9. Mai 2004, 01:05
Bewertung:

gelesen: 8644

Beitrag als Lesezeichen
Hi Pat

folgende Abschnitte im Script ändern:

# -------> interne Daten aus den erwarteten hidden-Feldern auslesen:
$delimiter = $query->param('delimiter'); # ---> Begrenzerzeichen zwischen name und value
$returnhtml = $query->param('return'); # ---> URL für Dankeseite
$subject = $query->param('subject'); # ---> E-Mail-Subject
$absender = $query->param('email'); # ---> E-Mail des Absenders
$name = $query->param('name'); # ---> Name des Absenders

# -------> Text der E-Mail aus den Formulardaten ermitteln:
$mailtext = "$name mit der mail-adresse $absender hat ihnen folgende nachricht gesendet:\n\n";


Gruß Sabine

(Dieser Beitrag wurde von SabineP am 9. Mai 2004, 01:08 geändert)

absender in einem form-mailer

pat87
Beiträge gesamt: 581

25. Mai 2004, 19:07
Bewertung:

gelesen: 8644

Beitrag als Lesezeichen
und wie kann ich es ändern, dass der absender mit dem namen schickt ( pat &lt;admin@pat87.ch&gt; ) wobei: name <e-mail> ist...

mfg p@
---
mailto:admin@pat87.ch
http://www.pat87.ch/

absender in einem form-mailer

oesi50
  
Beiträge gesamt: 2315

25. Mai 2004, 20:26
Bewertung:

gelesen: 8644

Beitrag als Lesezeichen
hi pat,

vielleicht so?

print MAIL "From: $name <$absender>\n";


Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)

absender in einem form-mailer

pat87
Beiträge gesamt: 581

25. Mai 2004, 21:14
Bewertung:

gelesen: 8644

Beitrag als Lesezeichen
> vielleicht so?
wenn ich die antwort gewusst hätte, hätte ich nicht gefragt...

: )) nei, vielen dank

mfg p@
---
mailto:admin@pat87.ch
http://www.pat87.ch/

absender in einem form-mailer

pat87
Beiträge gesamt: 581

25. Mai 2004, 22:00
Bewertung:

gelesen: 8644

Beitrag als Lesezeichen
wo liegt hier der fehler???

unter http://www.pat87.ch/dvd_formular.html ist das formular aber es geht nicht richtig, das ich die auswahl auch angezeigt gekriege:

#!/usr/bin/perl

# -------> SMTP-Programm zum Versenden der Mail:
$Sendmail_Prog = "/usr/lib/sendmail";

# -------> Modul f¸r CGI-Scripts einbinden:
use CGI;

# -------> Modul f¸r CGI-Scripts zum Einlesen der Formulardaten anwenden:
$query = new CGI;
@names = $query->param;

# -------> interne Daten aus den erwarteten hidden-Feldern auslesen:
$delimiter = $query->param('delimiter');
$returnhtml = $query->param('return');
$subject = $query->param('subject');
$absender = $query->param('email');
$name = $query->param('name');
$dvd = $query->param('dvd');
$dvd2 = $query->param('dvd2');
$dvd3 = $query->param('dvd3');

# -------> Text der E-Mail aus den Formulardaten ermitteln:
$mailtext = "$name will folgende dvd's:\n $dvd\n $dvd2\n $dvd3";


# -------> E-Mail versenden:
open(MAIL,"|$Sendmail_Prog -t") || print STDERR "mailprogramm konnte nicht gestartet werden\n";
print MAIL "To: admin\@pat87.ch\n";
print MAIL "From: $name <$absender>\n";
print MAIL "Subject: $subject\n\n";
print MAIL "$mailtext\n";
close(MAIL);

# -------> Dankeseite an Browser senden:
print "Location: $returnhtml\n\n";


vielen dank schon im voraus

mfg p@
---
mailto:admin@pat87.ch
http://www.pat87.ch/

absender in einem form-mailer

oesi50
  
Beiträge gesamt: 2315

25. Mai 2004, 22:32
Bewertung:

gelesen: 8644

Beitrag als Lesezeichen
was geht denn nicht?
beschreibe doch mal Dein Problem etwas genauer.

Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)

absender in einem form-mailer

pat87
Beiträge gesamt: 581

26. Mai 2004, 09:00
Bewertung:

gelesen: 8644

Beitrag als Lesezeichen
wenn du welche dvd's ausgewählt hat, so zeigt es mir diese in dem mail nicht an... ändere doch mal kurz das script für deine mail-adresse und versuche es mal...

bitte schreibe mir dann, an was es liegt, wenn du es findest...

mfg p@
---
mailto:admin@pat87.ch
http://www.pat87.ch/

absender in einem form-mailer

oesi50
  
Beiträge gesamt: 2315

26. Mai 2004, 11:59
Bewertung:

gelesen: 8644

Beitrag als Lesezeichen
hi Pat,

lade Dir doch mal dieses Script

http://vsrv.de/download/info.cgi

und rufe es statt Deines Mailscriptes auf. Damit kannst Du die übergebenen Parameter feststellen.

Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)

absender in einem form-mailer

SabineP
Beiträge gesamt: 7586

26. Mai 2004, 12:21
Bewertung:

gelesen: 1743

Beitrag als Lesezeichen
Hallo Pat,

habe Dein Script mit Deinem Formular getestet.

In der Mail steht:

Testname will folgende dvd's:
a beautiful mind
ai - kuenstliche intelligenz
cool runnings

Bei mir klappt das also ausgezeichnet.

Gruß Sabine

absender in einem form-mailer

pat87
Beiträge gesamt: 581

26. Mai 2004, 12:50
Bewertung:

gelesen: 1743

Beitrag als Lesezeichen
jetzt geht es... wahrscheinlich habe icgh den cache vergessen zu leeren...

vielen dank

mfg p@
---
mailto:admin@pat87.ch
http://www.pat87.ch/