Sending Attachment using MIME::Lite

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • xmaverick
    New Member
    • Aug 2009
    • 2

    Sending Attachment using MIME::Lite

    Hello,

    I'm a newbie to perl and i'd like some assistance trying to figure out how to send an attachment using MIME::Lite. I have searched the net far and wide and have used and modify different examples of attachment scripts. Unfortunately, i have had no luck trying to execute my script.


    Every time i attempt to execute the script i receive the following response:
    Global symbol "$msg" requires explicit package name at attach1.pl line 22.
    Global symbol "$msg" requires explicit package name at attach1.pl line 30.
    Global symbol "$msg" requires explicit package name at attach1.pl line 36.
    Global symbol "$file_gif" requires explicit package name at attach1.pl line 41.
    Global symbol "$msg" requires explicit package name at attach1.pl line 43.


    Below is the code:

    #!/usr/bin/perl -w
    use strict;
    use warnings;
    use MIME::Lite;



    ### Adjust sender, recipient and your SMTP mailhost
    my $from_address = 'elliot.anico@c ellularatsea.co m';
    my $to_address = 'elliot.anico@c ellularatsea.co m';


    ### Adjust subject and body message
    my $subject = 'A message with 2 parts ...';
    my $message_body = "Here's the attachment file(s) you wanted";

    ### Adjust the filenames
    my $my_file_pdf = '/export/home/omcadmin/bin/test.pdf';
    my $your_file_pdf = 'test.pdf';

    ### Create the multipart container
    $msg = MIME::Lite->new (
    From => $from_address,
    To => $to_address,
    Subject => $subject,
    Type =>'multipart/mixed'
    ) or die "Error creating multipart container: $!\n";

    ### Add the text message part
    $msg->attach (
    Type => 'TEXT',
    Data => $message_body
    ) or die "Error adding the text message part: $!\n";

    ### Add the PDF file
    $msg->attach (
    Type => 'pdf/pdf',
    Path => $my_file_pdf,
    Filename => $your_file_pdf,
    Disposition => 'attachment'
    ) or die "Error adding $file_gif: $!\n";

    $msg->send;




    I know this is probably something stupid. Can someone assist me with this?
  • nithinpes
    Recognized Expert Contributor
    • Dec 2007
    • 410

    #2
    When you are using strict pragma, all the local variables in the script need to be declared with my.
    Change the line:
    Code:
    $msg = MIME::Lite->new (
    to:

    Code:
    my $msg = MIME::Lite->new (

    As for $file_gif, the variable is not defined anywhere in the script.

    Comment

    • numberwhun
      Recognized Expert Moderator Specialist
      • May 2007
      • 3467

      #3
      These are all errors associated with using strict and warnings and need to be worked out to get to any real errors.

      Regards,

      Jeff

      Comment

      • KevinADC
        Recognized Expert Specialist
        • Jan 2007
        • 4092

        #4
        Already replied to and resolved on another forum.

        Comment

        • xmaverick
          New Member
          • Aug 2009
          • 2

          #5
          I see. well, i managed to modify my script but i'm having problems attempting to send the email via Net::SMTP. I keep receiving the following error when i execute the script:

          SMTP MAIL command failed:
          5.7.1 Helo invalid .

          at attach1.pl line 30


          This is the very last line in the script below which is
          $msg -> send;

          Below is my modified script:

          #!/usr/bin/perl -w
          use warnings;
          use MIME::Lite;
          use Net::SMTP;


          my $msg = MIME::Lite->new(
          From => 'elliot.anico@c ellularatsea.co m',
          To => 'elliot.anico@c ellularatsea.co m',
          cc => 'wms.nmc@cellul aratsea.com',
          Subject => 'Multiple attachments',
          Type => 'multipart/mixed');

          $msg->attach( Type =>'image/jpg',
          Path =>'/export/home/omcadmin/bin/Sunset.jpg',
          Filename =>'Sunset.jpg') ;

          $msg->attach( Type =>'image/jpg',
          Path =>'/export/home/omcadmin/bin/Winter.jpg',
          Filename =>'Winter.jpg') ;

          $msg->attach( Type =>'TEXT',
          Data =>'This is a test for outside usage');



          $SMTP_SERVER = 'wmsexg01.corp. cellularatsea.c om';

          MIME::Lite->send('smtp', 'SMTP_SERVER');
          $msg -> send;



          What could i be doing wrong?

          Comment

          • KevinADC
            Recognized Expert Specialist
            • Jan 2007
            • 4092

            #6
            see perlguru

            Comment

            Working...