Connecting Tech Pros Worldwide Forums | Help | Site Map

Perl Send email

Newbie
 
Join Date: Nov 2008
Posts: 1
#1: Nov 19 '08
hi
Im new to Perl.
Im trying to write a program to send an e-mail via my cgi script. I tried various options - MIME::Lite, Sendmail, Mail::Sender, and none seem to work.
I get no error message in the Server Log file, but I dont receive an e-mail either. I suspect that it cant establish a connection to the SMTP server. Is there a way of knowing what communication happens with the SMTP server. The code I use is as below:


Thanks for your help.
Amy

Expand|Select|Wrap|Line Numbers
  1. #!C:\Perl\bin\perl.exe
  2. use CGI::Carp qw(fatalsToBrowser);
  3.  
  4.  use Mail::Sender;
  5.  
  6.  use Net::SMTP;
  7.  
  8.  print "Content-type: text/html\n\n";
  9.  
  10.  my $relay = "xxx.xxx.edu";
  11.  my $smtp = Net::SMTP->new($relay)
  12.     || die "Can't open mail connection: $!";
  13.     my $to='xxx\@cs.xxx.edu';
  14.     my $from='xxx\@cs.xxx.edu';
  15.  
  16.     $smtp->mail($from);
  17.         $smtp->to($to);
  18.  
  19.         $smtp->data();
  20.         $smtp->datasend("To: $to\n");
  21.         $smtp->datasend("From: $from\n");
  22.         $smtp->datasend("Subject: $subject\n");
  23.         $smtp->datasend("\n");
  24.  
  25.         foreach $body (@body) {
  26.             $smtp->datasend("$body\n");
  27.         }
  28.  
  29.         $smtp->dataend();
  30.     $smtp->quit();
  31.  
  32.  
  33.  
  34.  
  35.  open my $DEBUG, ">> debugfile.txt"
  36.                  or die "Can't open the debug file: $!\n";
  37.  
  38.  $sender = new Mail::Sender
  39.   {smtp => 'mail.cs.xxx.edu', from => 'xxx@cs.xxx.edu'};
  40.  $sender->MailFile({to => 'xxx@cs.xxx.edu',
  41.   subject => 'Here is the file',
  42.   msg => "I'm sending you the list you wanted.",
  43.   debug => $DEBUG,
  44.   debug_level=>3,
  45.   authid=>'xxx',
  46.   authpwd=>'pwd'
  47.  });
  48.    $sender->SendEnc;
  49.  
  50.   $sender->Close;
  51.  

Ganon11's Avatar
Moderator
 
Join Date: Oct 2006
Location: New York, United States of America
Posts: 3,428
#2: Nov 19 '08

re: Perl Send email


Try Mail::Send; it's the module my professor suggests for e-mailing with Perl. Here's a short sample:

Expand|Select|Wrap|Line Numbers
  1. use Mail::Send;
  2. my $mail = Mail::Send->new;
  3. $mail->to('joe@example.com');
  4. $mail->subject('Hey Joe');
  5. my $fh = $mail->open();
  6. print $fh "Hey Joe, what's up?";
  7. $fh->close;
eWish's Avatar
Moderator
 
Join Date: Jul 2007
Location: Arkansas
Posts: 900
#3: Nov 20 '08

re: Perl Send email


Mail::Sendmail is also a nice choice.

--Kevin
Familiar Sight
 
Join Date: Sep 2008
Posts: 236
#4: Dec 11 '08

re: Perl Send email


Hi Sirs,

I am using the codes above and it did not work. Used Email::send and not mail::send module as perl package manager did not have that.

Is it smtp or what problem.. Is there any sample? Thanks in advance.


Best Rgds,
Andrew


Expand|Select|Wrap|Line Numbers
  1.  
  2. #!/usr/bin/perl -w
  3. #!c:/perl/bin/perl.exe
  4.  
  5.  
  6. use Email::Send; 
  7. my $mail = Mail::Send->new; 
  8. $mail->to('joe@example.com'); 
  9. $mail->subject('Hey Joe'); 
  10. my $fh = $mail->open(); 
  11. print $fh "Hey Joe, what's up?"; 
  12. $fh->close; 
  13.  
  14.  
Html error
========
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, admin@Andrew.solar and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.


apache error log
============
[Thu Dec 11 14:13:52 2008] [error] [client 127.0.0.1] (OS 3)The system cannot find the path specified. : couldn't spawn child process: D:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/emailsend6.pl

apache access log
=============
127.0.0.1 - - [11/Dec/2008:14:13:51 +0800] "GET /cgi-bin/emailsend6.pl HTTP/1.1" 500 538

perl script testing in perl/bin
====================
C:\Perl\bin>perl -c d:\emailsend6.pl
d:\emailsend6.pl syntax OK
KevinADC's Avatar
Expert
 
Join Date: Jan 2007
Location: Southern California USA
Posts: 4,091
#5: Dec 11 '08

re: Perl Send email


wrong shebang line?

#!/usr/bin/perl -w
#!c:/perl/bin/perl.exe

the second one should be first, unless you actually have perl installed at usr/bin on your Windows box.
numberwhun's Avatar
Site Moderator
 
Join Date: May 2007
Location: New Hampshire
Posts: 2,572
#6: Dec 11 '08

re: Perl Send email


Quote:

Originally Posted by happyse27 View Post

Hi Sirs,

I am using the codes above and it did not work. Used Email::send and not mail::send module as perl package manager did not have that.

Is it smtp or what problem.. Is there any sample? Thanks in advance.


Best Rgds,
Andrew


Expand|Select|Wrap|Line Numbers
  1.  
  2. #!/usr/bin/perl -w
  3. #!c:/perl/bin/perl.exe
  4.  
  5.  
  6. use Email::Send; 
  7. my $mail = Mail::Send->new; 
  8. $mail->to('joe@example.com'); 
  9. $mail->subject('Hey Joe'); 
  10. my $fh = $mail->open(); 
  11. print $fh "Hey Joe, what's up?"; 
  12. $fh->close; 
  13.  
  14.  
Html error
========
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, admin@Andrew.solar and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.


apache error log
============
[Thu Dec 11 14:13:52 2008] [error] [client 127.0.0.1] (OS 3)The system cannot find the path specified. : couldn't spawn child process: D:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/emailsend6.pl

apache access log
=============
127.0.0.1 - - [11/Dec/2008:14:13:51 +0800] "GET /cgi-bin/emailsend6.pl HTTP/1.1" 500 538

perl script testing in perl/bin
====================
C:\Perl\bin>perl -c d:\emailsend6.pl
d:\emailsend6.pl syntax OK

You need to fix your code. You are calling one module and then specifying another in the constructor:

Expand|Select|Wrap|Line Numbers
  1. use Email::Send; 
  2. my $mail = Mail::Send->new; 
  3.  
My suggestion is to read the Email::Send page at cpan.org and see if they have anything regarding logging.

Regards,

Jeff
Familiar Sight
 
Join Date: Sep 2008
Posts: 236
#7: Dec 12 '08

re: Perl Send email


Hi all,

This code didnt work either...

same problem of internal server error...

same logs.

kindly advise...


Thanks,
Andrew

Expand|Select|Wrap|Line Numbers
  1. #!c:/perl/bin/perl.exe 
  2.  
  3.  
  4.  
  5.    use Mail::Sender::Easy qw(email);   
  6.  
  7.  
  8.  
  9.     email({
  10.  
  11.         'from'         => 'andrew@inovaventure.com',
  12.  
  13.         'to'           => 'happse@hotmail.com',
  14.  
  15.         'cc'           => 'your_pal@ddre.ss',
  16.  
  17.         'subject'      => 'Perl is great!',
  18.  
  19.         'priority'     => 2, # 1-5 high to low
  20.  
  21.         'confirm'      => 'delivery, reading',
  22.  
  23.         'smtp'         => '192.168.2.111',
  24.  
  25.         'port'         => 26,
  26.  
  27.         'auth'         => 'LOGIN',
  28.  
  29.         'authid'       => 'andrew',
  30.  
  31.         'authpwd'      => 'andrew2100',
  32.  
  33.         '_text'        => 'Hello *World* :)',    
  34.  
  35.         '_html'        => 'Hello <b>World</b> <img src="cid:smile1" />',
  36.  
  37.         '_attachments' => {
  38.  
  39.             'smiley.gif' => {
  40.  
  41.                 '_disptype'   => 'GIF Image',
  42.  
  43.                 '_inline'     => 'smile1',
  44.  
  45.                 'description' => 'Smiley',
  46.  
  47.                 'ctype'       => 'image/gif',    
  48.  
  49.                 'file'        => '/home/foo/images/smiley.gif',
  50.  
  51.             },
  52.  
  53.             'mydata.pdf' => {
  54.  
  55.                 'description' => 'Data Sheet',  
  56.  
  57.                 'ctype'       => 'application/pdf',
  58.  
  59.                 'msg'         => $pdf_guts,
  60.  
  61.             },
  62.  
  63.         },
  64.  
  65.     }) or die "email() failed: $@";
  66.  
eWish's Avatar
Moderator
 
Join Date: Jul 2007
Location: Arkansas
Posts: 900
#8: Dec 13 '08

re: Perl Send email


You are missing some important data here.

Expand|Select|Wrap|Line Numbers
  1. use strict;
  2. use warnings;
These are essential because the error you are saying is to vague. It could be many different things that are causing it. Without some error checking and syntax checking it is that much harder.

Read this for some potential help for your problem.


--Mork
Familiar Sight
 
Join Date: Sep 2008
Posts: 236
#9: Dec 14 '08

re: Perl Send email


hi Sir,

The below code is working well as minimal codes... cheers...

Btw, how do I find free public smtp server since this is internal server ip with vpn??


Thanks again,
Andrew

Expand|Select|Wrap|Line Numbers
  1.  
  2. #!c:/perl/bin/perl.exe -w 
  3.  
  4.    use strict; 
  5.    use warnings;  
  6.  
  7.    use Mail::Sender::Easy qw(email); 
  8.  
  9.     print "Content-type: text/plain\n\n";
  10.  
  11.  
  12.     email({
  13.         #from email address need to change
  14.         'from'         => 'andrew@inova.com',
  15.         'to'           => 'happse@hotmail.com',
  16.         'cc'           => 'your_pal@ddre.ss',
  17.         'subject'      => 'Perl is great!',
  18.         'priority'     => 2, # 1-5 high to low
  19.         'confirm'      => 'delivery, reading',
  20.         'smtp'         => '192.168.2.111',
  21.         'port'         => 25,
  22.         #'auth'         => 'LOGIN',
  23.         'authid'       => 'andrew@inovaventure.com',
  24.         'authpwd'      => 'andrew2100',
  25.         '_text'        => 'Hello *World* :)',    
  26.         #'_html'        => 'Hello <b>World</b> <img src="cid:smile1" />',
  27.         #'_attachments' => {
  28.             #'smiley.gif' => {
  29.                 #'_disptype'   => 'GIF Image',
  30.                 #'_inline'     => 'smile1',
  31.                 #'description' => 'Smiley',
  32.                 #'ctype'       => 'image/gif',    
  33.                 #'file'        => '/home/foo/images/smiley.gif',
  34.             #},
  35.             #'mydata.pdf' => {
  36.                 #'description' => 'Data Sheet',  
  37.                 #'ctype'       => 'application/pdf',
  38.                 #'msg'         => $pdf_guts,
  39.             #},
  40.         #},
  41.     }) or die "email() failed: $@";
  42.  
  43.  
Familiar Sight
 
Join Date: Sep 2008
Posts: 236
#10: Dec 14 '08

re: Perl Send email


Hi All,

This is the more complete codes with attachment sent successfully... Cheers...


Thanks,
Andrew

Expand|Select|Wrap|Line Numbers
  1. #!c:/perl/bin/perl.exe -w 
  2.  
  3.    use strict; 
  4.    use warnings;  
  5.  
  6.    use Mail::Sender::Easy qw(email); 
  7.  
  8.     print "Content-type: text/plain\n\n";
  9.  
  10.  
  11.     email({
  12.         'from'         => 'andrew@inovaventure.com',
  13.         'to'           => 'happse@hotmail.com',
  14.         'cc'           => 'your_pal@ddre.ss',
  15.         'subject'      => 'Perl is great!',
  16.         'priority'     => 2, # 1-5 high to low
  17.         'confirm'      => 'delivery, reading',
  18.         'smtp'         => '192.168.2.111',
  19.         'port'         => 25,
  20.         #'auth'         => 'LOGIN',
  21.         'authid'       => 'andrew',
  22.         'authpwd'      => 'andrew2100',
  23.         '_text'        => 'Hello *World5* :)',    
  24.         '_html'        => 'Hello <b>World</b> <img src="cid:smile1" />',
  25.         '_attachments' => {
  26.             'smiley.gif' => {
  27.                 '_disptype'   => 'GIF Image',
  28.                 '_inline'     => 'smile1',
  29.                 'description' => 'Smiley',
  30.                 'ctype'       => 'image/gif',    
  31.                 'file'        => 'D:/program files/Apache Software 
  32.  
  33. Foundation/Apache2.2/htdocs\smiley.gif',
  34.             },
  35.             #'mydata.pdf' => {
  36.                 #'description' => 'Data Sheet',  
  37.                 #'ctype'       => 'application/pdf',
  38.                 #'msg'         => $pdf_guts,
  39.             #},
  40.         },
  41.     }) or die "email() failed: $@";
  42.  
Familiar Sight
 
Join Date: Sep 2008
Posts: 236
#11: Dec 16 '08

re: Perl Send email


Hi all,

1) Btw, how do I find free public smtp server since this is internal server ip with vpn??

2) Is it possible to create html main page and use the perl scripts to activate the webpage respective iconed module functions? And eventually link back to the html again or Alternatively use perl to create the entire website?



Cheers...
Andrew
KevinADC's Avatar
Expert
 
Join Date: Jan 2007
Location: Southern California USA
Posts: 4,091
#12: Dec 16 '08

re: Perl Send email


Answer to #1 : google

I don't understand question #2, but you can use perl to create an entire website
Familiar Sight
 
Join Date: Sep 2008
Posts: 236
#13: Dec 17 '08

re: Perl Send email


Thanks Sir, that's what I needed to confirmed....

But using html as main page, and using perl as the CGI as the background module how to link back to html main page gracefully?


Cheers...
KevinADC's Avatar
Expert
 
Join Date: Jan 2007
Location: Southern California USA
Posts: 4,091
#14: Dec 17 '08

re: Perl Send email


Quote:
But using html as main page, and using perl as the CGI as the background module how to link back to html main page gracefully?
Maybe you want to use SSI if you are going to use an HTML document but need dynamic content. Note that SSI has nothing to do with Perl so I will not answer any questions about SSI. Google for "SSI tutorial".

You can also use templating systems with perl to create dynamic websites but that will take you in a whole new direction.
Familiar Sight
 
Join Date: Sep 2008
Posts: 236
#15: Dec 19 '08

re: Perl Send email


Hi Kevin Sir,

Thanks... Any good websites with examples?? Went to a few, but the examples I could not understand how to integrate...

Hands on: Simple templates with Perl - WhatPC?


Cheers...
Andrew
Familiar Sight
 
Join Date: Sep 2008
Posts: 236
#16: Dec 19 '08

re: Perl Send email


Hi Sirs,

Thanks! Slightly working now....

I found this html::template example and put the template1.tmpl and template1.pl in cgi-bin directory... please see the website reference below... Cheers...

Thanks,
Andrew

website reference :
Introducing HTML::Template [CGI & Perl Tutorials]

template1.tmpl in D:\Program Files\Apache Software Foundation\Apache2.2\htdocs
===============================
Expand|Select|Wrap|Line Numbers
  1. <html> 
  2. <head> 
  3.  <title>Template 1</title> 
  4. </head> 
  5. <body> 
  6. Today is <tmpl_var name=day> 
  7. </body> 
  8. </html>
  9.  
template1.pl in D:\Program Files\Apache Software Foundation\Apache2.2\cgi-bin
===============================
Expand|Select|Wrap|Line Numbers
  1.  
  2. #!c:/perl/bin/perl.exe -T
  3.  
  4. use CGI qw(:all); 
  5. use HTML::Template; 
  6.  
  7. use POSIX; 
  8. print header; 
  9. my $template = HTML::Template->new(filename => 'template1.tmpl'); 
  10. $template->param(day => strftime('%A', localtime()) ); 
  11. print $template->output();
  12.  
numberwhun's Avatar
Site Moderator
 
Join Date: May 2007
Location: New Hampshire
Posts: 2,572
#17: Dec 19 '08

re: Perl Send email


Andrew,

I hate to point this out now and am sorry that I did not catch it earlier, but you completely hijacked this thread. (IMHO)

I say this as we have not heard one bit from the original OP that started this thread and I am actually wondering if Amy has any questions still?

Next time, if you have questions and it will continue on as this did, it is always better to start a new thread and to reference the thread the code is from.

Regards,

Jeff
Kelicula's Avatar
Expert
 
Join Date: Jul 2007
Posts: 169
#18: Dec 22 '08

re: Perl Send email


As for creating HTML, or linking back gracefully...
Don't forget the CGI module, which comes standard with Perl. Active State, or UNIX version.
Familiar Sight
 
Join Date: Sep 2008
Posts: 236
#19: Dec 25 '08

re: Perl Send email


Hi Amy,

Sorry about that, cos I could not post new thread cos the website was under upgrading probably.


Hi Guys,

Thanks for the pointers again. Cheers...


Best Rgds,
Andrew
Reply