korp has asked for the wisdom of the Perl Monks concerning the following question:

Hello Monks, I need your help. I currently have a few automated scripts that generate emails for me. This is not an issue. My issue is that I cannot, no matter how hard I try, find a package that allows me to send an email using SSL with an attachment. It is either one or the other (encryption or attachment). Is there something out there that can handle both? If there is, I have looked everywhere and cannot find it. Thank you for the guidance. Ryan

Replies are listed 'Best First'.
Re: Sending emails in Perl
by Anonymous Monk on Feb 21, 2010 at 04:29 UTC
Re: Sending emails in Perl
by zentara (Cardinal) on Feb 21, 2010 at 11:38 UTC
      Hmmmm.... Thanks for all the responses. So after looking at the link to the Mime with SSL I think that should work(?). I guess the line that indicates the attachment is: TmplOptions => \%options, So, out of curiosity, why isn't there a package that does this? I don't think what I am doing is so obscure (writing an email with an Excel spreadsheet attached). In any case, if you guys think it should work, I will figure it out with trial and error to I get it. Thanks, Ryan
        why isn't there a package that does this?

        From my perspective, SSL mail is relatively recent, and still is not default in most mail setups. Also, I just handed you the link, containing the script. All you need to do, is change the MIME::Lite::TT::HTML; object to a simple MIME::Lite object..... it is not that complicated. Thats probably why there is no package for it.... the code is available for you to use as a simple script.

        I don't mean to offend, but this is a site for perl programming...... it's not the Tech Support dungeon in the basement of your corporation. So, if you can't figure out enough to swap the MIME objects, then hire a programmer. Google for "perl MIME::Lite attachment" and see all the code that has been written for free, for you to learn from.


        I'm not really a human, but I play one on earth.
        Old Perl Programmer Haiku
        Here is a simple script. It works with my local ISP, but GMAIL smtp seems to reject it, and that is not Perl's fault.

        Update: It seems if you send a test.doc , instead of .zip, GMAIL's smtp will accept it. Apparently to avoid viruses for windows users, they block .zip and .exe attachments. ???

        #!/usr/bin/perl use warnings; use strict; use Net::SMTP::SSL; use MIME::Lite; my $user = 'zentara@woohoo.org'; my $pass = 'whatdoyouguess'; #$server = 'your-smtp-server'; my $server = 'smtp.woohoo.com'; my $to = 'user@some.net'; my $from_name = 'zentara'; my $from_email = 'zentara@woohoo.org'; my $subject = 'smtp-ssl-auth test attach'; my $msg = MIME::Lite->new( From => $from_email, To => $to, Subject =>'test message', Type =>'TEXT', Data =>'This is a test, i repeat only a test', ); $msg->attach(Type =>'application/octet-stream', Encoding =>'base64', Path =>'./test.zip', #full path ); # Type => 'application/msexcel', # Path => $report, # Filename => 'college_orders.xls', # Encoding => 'base64' my $smtps = Net::SMTP::SSL->new($server, Port => 465, DEBUG => 1, ) or warn "$!\n"; # this works in early 2010 defined ($smtps->auth($user, $pass)) or die "Can't authenticate: $!\n"; $smtps->mail($from_email); $smtps->to( $to ); $smtps->data(); $smtps->datasend( $msg->as_string() ); $smtps->dataend(); $smtps->quit(); print "done\n";

        I'm not really a human, but I play one on earth.
        Old Perl Programmer Haiku
Re: Sending emails in Perl
by GrandFather (Saint) on Feb 21, 2010 at 04:51 UTC

    MIME::Lite Update: read the whole question before replying!


    True laziness is hard work