$file_attach{'testdoc.doc'} = '/home/path/to/document/testdoc.doc'; etc... # I've tested the %file_attach hash and it does contain the correct path and file name. $email_msg = MIME::Lite->new ( Return-Path=>'me@here.com', From =>'me@here.com', To =>$email_to, Subject =>"Completed Documents ($doc_count attached)", Type =>'multipart/alternative', ); $email_msg->attach (Type =>'text/plain', Encoding=>'7bit', Data =>$plain ); $email_msg->attach (Type =>'text/html', Data =>$html_body, Encoding =>'7bit', ); foreach $file (keys %file_attach) { $email_msg->attach (Type =>'application/msword', Path =>$file_attach{$file}, Filename=>$file, Disposition=>'attachment', Encoding =>'base64' };