Solved

NEED HELP PLEASE !!

Posted on 2001-06-11
9
199 Views
Last Modified: 2013-12-25
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
Comment
Question by:samgonzales
  • 4
  • 2
  • 2
  • +1
9 Comments
 
LVL 5

Expert Comment

by:marecs
Comment Utility
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
 

Expert Comment

by:Wazza
Comment Utility
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
 

Author Comment

by:samgonzales
Comment Utility
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
 
LVL 3

Expert Comment

by:rag2000
Comment Utility
#!/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
Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

 
LVL 3

Expert Comment

by:rag2000
Comment Utility
change open(MAIL, "|/var/qmail/bin/qmail-inject");
to open(MAIL, "|/var/qmail/bin/qmail-inject -t");
0
 
LVL 5

Accepted Solution

by:
marecs earned 150 total points
Comment Utility
#!/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
 

Author Comment

by:samgonzales
Comment Utility
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
 
LVL 5

Expert Comment

by:marecs
Comment Utility
I'll have a look
0
 
LVL 5

Expert Comment

by:marecs
Comment Utility
Try it now.
0

Featured Post

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

In this tutorial I will focus on how to use WhizBase as a tool for sending ICQ messages to ICQ. Here I will use a new technology in WhizBase, published in WhizBase 5.1 version. In this tutorial I will use 3 files, pager.wbsp for the processing, e…
Active Directory replication delay is the cause to many problems.  Here is a super easy script to force Active Directory replication to all sites with by using an elevated PowerShell command prompt, and a tool to verify your changes.
Learn the basics of strings in Python: declaration, operations, indices, and slicing. Strings are declared with quotations; for example: s = "string": Strings are immutable.: Strings may be concatenated or multiplied using the addition and multiplic…
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…

744 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now