Avatar billede christian_h Nybegynder
07. april 2002 - 08:47 Der er 12 kommentarer og
1 løsning

From felt i mail sendt med net::smtp via cgi script.

Hej Alle
Dette script skulle jo være lige ud af landevejen for jer eksperter, men jeg kan simpelthen ikke få scriptet til at sætte "brugerens" indtastede email adr. ind i From feltet på den mail der bliver sendt afsted når den tilhørende form er blevet udfyldt, feltet BLIVER hentet fra formen, for den bliver sendt med, men den står i KUN body´en på mailen og ikke i From feltet, det hele drejer sig (så vidt jeg kan se) om linien
$smtp->datasend("From: $FORM{'bemail'}\n");
Hvis jeg "bare" skriver en email adr. i stedet for $FORM{'bemail'} bliver det sat rigtigt ind i mailens From felt, men det skulle jo gerne være den email adr. som brugeren selv har indtastet på den form som han/hun lige har udfyld, hvad gør jeg galt ???

#!/usr/bin/perl
print "Content-type: text/html\n\n";

use Net::SMTP;
$smtp = Net::SMTP->new('smtp.mail.dk', Hello => 'rr.com');
$smtp->mail('xxxxxx@postx.tele.dk');
$smtp->to('XXXXX@postX.tele.dk');
$smtp->data();
$smtp->datasend("To: salg@xxxx-xxx.dk\n");
$smtp->datasend("From: $FORM{'bemail'}\n");
$smtp->datasend("Subject: Bestilling fra xxxxx-xx.dk\n");
$smtp->datasend("\n");

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
$counter=0;
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

$counter=$counter+1;
$Titel{$counter}=$name;
$FORM{$name} = $value;
}

print<<ENDE_AUSGABE;
<HTML>
<HEAD>
<TITLE>Email afesndt</TITLE>
</HEAD>
<BODY BGCOLOR="#ffffff">
<center>
<SCRIPT>
self.location.href="$FORM['url']tak.htm"
</SCRIPT>
ENDE_AUSGABE

$smtp->datasend("Gade: ".$FORM{'bstrasse'}."\nPost nr. & BY: ".$FORM{'bpostcode'}." ".$FORM{'bstadt'}."\nTelefon:".$FORM{'btelefon'}."\nEmail:".$FORM'bemail'}."\nKommentar:".$FORM{'Kommentar'});

<-----> resten af sciptet er klippet ud <----->
Avatar billede christian_h Nybegynder
07. april 2002 - 08:51 #1
Ups der var lige sket en lille kopierings fejl, der skulle have stået:

$smtp->datasend("Gade: ".$FORM{'bstrasse'}."nPost nr. & BY: ".$FORM{'bpostcode'}." ".$FORM{'bstadt'}."nTelefon:".$FORM{'btelefon'}."nEmail:".$FORM{'bemail'}."nKommentar:".$FORM{'Kommentar'});
Avatar billede erikjacobsen Ekspert
07. april 2002 - 09:14 #2
Måske du skulle lave din

  $FORM{$name} = $value;

før du bruger værdier derfra ?
Avatar billede christian_h Nybegynder
07. april 2002 - 16:10 #3
Jeg er temmelig grøn inden for perl, så nu har jeg prøvet at bytte lidt rundt på det, og nu virker det faktisk, er det OK at lave det om på denne måde som jeg har gjort nedenunder ?.
Scriptet indsætter nu brugerens email i from feltet, men der bliver også skrevet "From: blabla@blabla.dk i bodyen på mailen 2 gange i toppen af mailen og i bunden af mailen hvorfor det ??.

#!/usr/bin/perl
print "Content-type: text/html\n\n";

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
$counter=0;
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

$counter=$counter+1;
$Titel{$counter}=$name;
$FORM{$name} = $value;
}

use Net::SMTP;
$smtp = Net::SMTP->new('XXXX.mail.dk', Hello => 'rr.com');
$smtp->mail('XXXXXx@postx.tele.dk');
$smtp->to('XXXXX@postx.tele.dk');
$smtp->data();
$smtp->datasend("To: salg@xxxx-x.dk\n");
$smtp->datasend("From: $FORM{'bemail'}\n");
$smtp->datasend("Subject: Bestilling fra RC-E.dk\n");
$smtp->datasend("\n");

print<<ENDE_AUSGABE;
<HTML>


<HEAD>
<TITLE>Email afesndt</TITLE>

</HEAD>

<BODY BGCOLOR="#ffffff">
<center>
<SCRIPT>
self.location.href="$FORM['url']tak.htm"
</SCRIPT>


ENDE_AUSGABE
$smtp->datasend("Betaling via ".$FORM{'orderm'}." von:\nKundennummer:".$FORM{'bkdnr'}."\nFirma: ".$FORM{'bfirma'}."\nNavn: ".$FORM{'bname'}."\n");
$smtp->datasend("Gade: ".$FORM{'bstrasse'}."\nPost nr. & BY: ".$FORM{'bpostcode'}." ".$FORM{'bstadt'}."\nTelefon:".$FORM{'btelefon'}."\nEmail:".$FORM{'bemail'}."\nKommentar:".$FORM{'Kommentar'});
#$smtp->datasend("\n\nLieferadresse:\nFirma: ".$FORM{'lfirma'}."\nName: ".$FORM{'lnachname'}."\nPLZ/Ort: ".$FORM{'lpostcode'}." ".$FORM{'lstadt'}."\nStrasse:".$FORM{'lstrasse'});
Avatar billede erikjacobsen Ekspert
07. april 2002 - 16:25 #4
Hmm, hos mig virker følgende helt efter bogen. Hvad mener du med
at from kommer 2 gange? Det forstår jeg ikke.

use Net::SMTP;
$smtp = Net::SMTP->new('mail.hasselager.net', Hello => 'rr.com');
$smtp->mail('erik@youreallywouldntwanttoknow.com');
$smtp->to('erik@youreallywouldntwanttoknow.com');
$smtp->data();
$smtp->datasend("To: erik\@youreallywouldntwanttoknow.com\n");
$smtp->datasend("From: blah\@youreallywouldntwanttoknow.com\n");
$smtp->datasend("Subject: Bestilling fra RC-E.dk\n");
$smtp->datasend("\n");

$smtp->datasend("Body");
$smtp->dataend();
Avatar billede christian_h Nybegynder
07. april 2002 - 16:35 #5
Sådan som scriptet er nu er, ser outputtet således ud :

From: Test@didos.com
Betaling via Nachname von:
Kundennummer:1207
Firma: Herude
Navn: Henning
Gade: Roskvej 269
Post nr. & BY: 2689 Der omkring
Telefon:+45 569988
Email:Test@didos.com
Kommentar:Dette er en test

Som du kan se står der både "From: Test@didos.com" + Email:Test@didos.com men samtidig har den (som den skal) sat From email adr. ind i from på mailen.

Det du gør på dit form eksempel virker også hos mig men kun hvis man selv skriver email adressen i "from" feltet på scriptet og den kan brugeren jo ikke.
Avatar billede erikjacobsen Ekspert
07. april 2002 - 16:43 #6
Hmm, er det din email klient der gør det, eller hvad ? Har du
prøvet mere end én klient?

Jeg kan ikke se hvorfor det skulle komme som den første
linie i body.
Avatar billede christian_h Nybegynder
07. april 2002 - 16:52 #7
Har kun prøvet én klient.
Nu har jeg prøvet at indsætte $smtp->datasend("Body"); og nu skriver den ikke From linien i body´en mere, men nu skriver den så stedet "body" ???
Avatar billede erikjacobsen Ekspert
07. april 2002 - 16:56 #8
Der har ikke stået en "from" nede i din body - fra et eksperiment.
Prøv langsomt at sætte dine egne felter ind igen i stedet for "Body"
Avatar billede christian_h Nybegynder
07. april 2002 - 17:02 #9
Det kigger jeg lige på, men i hvertfald virker det jeg spurgte om MANGE TAK for det erikjacobsen, jeg tildeler dig dine point nu.

Mvh.
Christian_h
Avatar billede erikjacobsen Ekspert
07. april 2002 - 17:03 #10
Du kan evt vende tilbage når du finder ud af hvad der er galt
Avatar billede christian_h Nybegynder
07. april 2002 - 17:08 #11
Ja, det vil jeg gøre :-)
Avatar billede christian_h Nybegynder
07. april 2002 - 17:14 #12
Nu har jeg indsat alle mine felter og slettet $smtp->datasend("BODY"); og nu virker det hele efter planen, hvad der har gjort at den skrev From ned i body´en kan jeg ikke helt gennemskue, men nu spiller det BARE.

:-)
christian_h
Avatar billede erikjacobsen Ekspert
07. april 2002 - 17:16 #13
Helt ok.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester