http://www.perlmonks.org?node_id=543591
Category: MIME AND SMTP
Author/Contact Info Anton Vandersteen anton.vandersteen@chello.nl Eindhoven/The Netherlands/Europe
Description: With this piece of code a email with attachment like a pdf file or a zip file can be sent. You only have to punt into this your own email adres, the adres of the receiver and finally the address of the mail server that you want to use from your provider. In this piece of code you will find scalars that I use to specify file. These can of course be replaced by your own. I have tested this and it works very well. I have put in a delay with "sleep" of 2 seconds. Have fun.
sub Mailer                     {
        use MIME::Lite;
        use Net::SMTP;

        sleep(2);
        
        ### Adjust sender, recipient and your SMTP mailhost
        my $from_address = 'sender@sender.com';
        my $to_address = 'receiver@receiver.com';
        my $mail_host = 'mail.domain.com';

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

        ### Adjust the filenames
        my $my_file_pdf = $file_out_pdf;
        my $your_file_pdf = $file_out_pdf;
        #my $my_file_zip = 'my_file.zip';
        #my $your_file_zip = 'your_file.zip';

        ### 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 => 'application/pdf',
        Path => $my_file_pdf,
        Filename => $your_file_pdf,
        Disposition => 'attachment'
        ) or die "Error adding $file_pdf: $!\n";

        ### Add the ZIP file
        #$msg->attach (
        #   Type => 'application/zip',
        #   Path => $my_file_zip,
        #   Filename => $your_file_zip,
        #   Disposition => 'attachment'
        #) or die "Error adding $file_zip: $!\n";

        ### Send the Message
        MIME::Lite->send('smtp', $mail_host, Timeout=>60);
        $msg->send;


}