• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 241
  • Last Modified:

NEED HELP PLEASE !!

Dear xperts,
I have this script for form processing which is suppose to send me the data from a form, send a reply to the customer, add their e-mail address to a text file so that I can use it for my mailing list (After it has checked that the e-mail is not allready in the text file). Anyway the problem is that it does not add e-mail addresses to the text file and only sends the auto responder e-mail and not the e-mail which is intended for myself. I have included the script below so you can have a look of what I am doing wrong. Any help would be apreciated. Remember I am not an expert on CGI scripts !!

#!/usr/local/bin/perl

$|++;
use CGI;
$query = new CGI;

$fullname=$query->param('fullname');
$email=$query->param('email');
$problem=$query->param('problem');

open(MAIL, "|/var/qmail/bin/qmail-inject");
print MAIL "From: $fullname<$e-mail>\n";
print MAIL "To: krooga\@runbox.com\n";
print MAIL "Subject: Customer needs help !!!\n";
print MAIL "\n";
print MAIL "Full Name    : $fullname\n";
print MAIL "eMail        : $email\n";
print MAIL "Problem      : $problem\n";
close MAIL;

open(MAIL,"|/var/qmail/bin/qmail-inject");
print MAIL "To: $email\n";
print MAIL "From: support\@krooga.co.uk\n";
print MAIL "Subject: RE: Krooga support\n";
print MAIL "Thank-you for contacting us at krooga.co.uk,\n";
print MAIL "we have received your Question/Comment and\n\n";
print MAIL "we are working hard to respond to you as fast\n";
print MAIL "as possible. You should receive an answer from\n";
print MAIL "us very soon.\n\n";
print MAIL "Thanks again,\n\n";
print MAIL "The Krooga Suport Team\n";
print MAIL "http://www.krooga.co.uk\n\n";
close MAIL;


open (LIST, ">>/data1/hypermart.net/krooga/support/maillist.txt");
@lines = <LIST>;
foreach $line (@lines)
{
$foundacopy = 0;
foreach $line2 (@lines)
{
if($line2 eq $line)
{
$foundacopy = 1;
}
}
if($foundacopy==0)
{ # prints only if no copy has been found
print LIST "$email\n";
}
}
close (LIST);

print "Content-type: text/html\n\n";
open(HANDLE,"/data1/hypermart.net/krooga/support/thanks.htm") || print "could not open thanks";
while(<HANDLE>) {
  $_=~s/grfx/..\/grfx/g;
  print $_;
}


Thanx
Sam ;-)

0
samgonzales
Asked:
samgonzales
  • 4
  • 2
  • 2
  • +1
1 Solution
 
marecsCommented:
Put
use CGI::Carp 'fatalsToBrowser';  # Remove when script works 100%
after
use CGI;

open (LIST, "+>>/data1/hypermart.net/krooga/support/maillist.txt") || die $!;
@lines = <LIST>;
chomp @lines;
print LIST "$email\n" unless grep {$e-mail eq $_} @lines;
close (LIST);

print MAIL "From: $fullname<$email>\n"; and not e-mail

There should be a
print MAIL "\n";
after the Subject for the second email. I don't know why you are not receiving the email sent to yourself.

Put the || die $! after each open
0
 
WazzaCommented:
i think i have missed something here - but aren't u comparing the same array against itself???

@lines = <LIST>;
foreach $line (@lines) ####### here
{
$foundacopy = 0;
foreach $line2 (@lines) ####### here
{
if($line2 eq $line)
{
$foundacopy = 1;
}
}
if($foundacopy==0)
{ # prints only if no copy has been found
print LIST "$email\n";
}
}
close (LIST);
0
 
samgonzalesAuthor Commented:
Do you think you could repost the complete script because i don't really understand what to do here. I am a newbie to CGI and perl I only install them.

Thanks

Sam ;-)
0
Prep for the ITIL® Foundation Certification Exam

December’s Course of the Month is now available! Enroll to learn ITIL® Foundation best practices for delivering IT services effectively and efficiently.

 
rag2000Commented:
#!/usr/local/bin/perl

$|++;
use CGI;
$query = new CGI;

$fullname=$query->param('fullname');
$email=$query->param('email');
$problem=$query->param('problem');

open(MAIL, "|/var/qmail/bin/qmail-inject");
print MAIL "From: $fullname<$email>\n";
print MAIL "To: krooga\@runbox.com\n";
print MAIL "Subject: Customer needs help !!!\n";
print MAIL "\n";
print MAIL "Full Name    : $fullname\n";
print MAIL "eMail        : $email\n";
print MAIL "Problem      : $problem\n";
close MAIL;

open(MAIL,"|/var/qmail/bin/qmail-inject");
print MAIL "To: $email\n";
print MAIL "From: support\@krooga.co.uk\n";
print MAIL "Subject: RE: Krooga support\n";
print MAIL "\n";
print MAIL "Thank-you for contacting us at krooga.co.uk,\n";
print MAIL "we have received your Question/Comment and\n\n";
print MAIL "we are working hard to respond to you as fast\n";
print MAIL "as possible. You should receive an answer from\n";
print MAIL "us very soon.\n\n";
print MAIL "Thanks again,\n\n";
print MAIL "The Krooga Suport Team\n";
print MAIL "http://www.krooga.co.uk\n\n";
close MAIL;

open (LIST, "+>>/data1/hypermart.net/krooga/support/maillist.txt");
@lines = <LIST>;
foreach $line (@lines)
{
$foundacopy = 0;
foreach $line2 (@lines)
{
if($line2 eq $line)
{
$foundacopy = 1;
}
}
if($foundacopy==0)
{ # prints only if no copy has been found
print LIST "$email\n";
}
}
close (LIST);

print "Content-type: text/html\n\n";
open(HANDLE,"/data1/hypermart.net/krooga/support/thanks.htm") || print "could not open thanks";
while(<HANDLE>) {
 $_=~s/grfx/..\/grfx/g;
 print $_;
}
0
 
rag2000Commented:
change open(MAIL, "|/var/qmail/bin/qmail-inject");
to open(MAIL, "|/var/qmail/bin/qmail-inject -t");
0
 
marecsCommented:
#!/usr/local/bin/perl
$|++;
use CGI;
use CGI::Carp 'fatalsToBrowser';  # Remove when script works 100%

$query = new CGI;
$fullname=$query->param('fullname');
$email=$query->param('email');
$problem=$query->param('problem');
open(MAIL, "|/var/qmail/bin/qmail-inject") || die $!;
print MAIL "From: $fullname<$email>\n";
print MAIL "To: krooga\@runbox.com\n";
print MAIL "Subject: Customer needs help !!!\n";
print MAIL "\n";
print MAIL "Full Name    : $fullname\n";
print MAIL "eMail        : $email\n";
print MAIL "Problem      : $problem\n";
close (MAIL) || die $!;

open(MAIL,"|/var/qmail/bin/qmail-inject") || die $!;
print MAIL "To: $email\n";
print MAIL "From: support\@krooga.co.uk\n";
print MAIL "Subject: RE: Krooga support\n";
print MAIL "\n";
print MAIL "Thank-you for contacting us at krooga.co.uk,\n";
print MAIL "we have received your Question/Comment and\n\n";
print MAIL "we are working hard to respond to you as fast\n";
print MAIL "as possible. You should receive an answer from\n";
print MAIL "us very soon.\n\n";
print MAIL "Thanks again,\n\n";
print MAIL "The Krooga Suport Team\n";
print MAIL "http://www.krooga.co.uk\n\n";
close (MAIL) || die $!;

open (LIST, "+>>/data1/hypermart.net/krooga/support/maillist.txt") || die $!;

@lines = <LIST>;
chomp @lines;
print LIST "$email\n" unless grep {$email eq $_} @lines;
close (LIST) || die $!;

print "Content-type: text/html\n\n";
open(HANDLE,"/data1/hypermart.net/krooga/support/thanks.htm") || die $!;
while(<HANDLE>) {
 s/grfx/..\/grfx/g;
 print;
}
0
 
samgonzalesAuthor Commented:
This is giving me a giving me a headache i tried it but it doesn't seem to be working....I changed my pw for hypermart can u please log on into my account and get the script working !! The details r as follows :

Username - krooga
Password - thanks

http://krooga.hypermart.net/support/maillist.txt
http://krooga.hypermart.net/cgi-bin/easyform.cgi
http://krooga.hypermart.net/contactus.htm

Thanks

Sam ;-)
0
 
marecsCommented:
I'll have a look
0
 
marecsCommented:
Try it now.
0

Featured Post

New feature and membership benefit!

New feature! Upgrade and increase expert visibility of your issues with Priority Questions.

  • 4
  • 2
  • 2
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now