2012-12-05 20 views
6

मैं एक स्क्रिप्ट चलाने की कोशिश कर रहा हूं जो एक टेक्स्ट फ़ाइल लेता है, इसे आर्काइव :: ज़िप का उपयोग करके संपीड़ित करता है, और ज़िप फ़ाइल का उपयोग करके ज़िप फ़ाइल को अनुलग्नक के रूप में भेजता है :: एक माइम संदेश बनाने के लिए प्रेषक।पर्ल ईमेल के साथ भेजे गए ज़िप फ़ाइल :: प्रेषक दूषित

मैं भ्रष्टाचार के बिना पर्ल में txt फ़ाइलों को भेज सकता हूं। मैं फाइल भेज सकता हूं जो भ्रष्टाचार के बिना मैन्युअल रूप से पर्ल ज़िप करता है। मैं perl के माध्यम से मैन्युअल रूप से ज़िपित फ़ाइल नहीं भेज सकता।

मुझे संदेह है कि मेरी समस्या ज़िप्ड फ़ाइल को पढ़ने या एमआईएमई संदेश बनाने के साथ है। यहां प्रासंगिक कोड है, जो अनिवार्य रूप से ईमेल :: एमआईएमई के सारांश से कोड है, जहां $ fileToSend ज़िप फ़ाइल के लिए पथ है।

कोई विचार?

use strict; 
use warnings; 
use Email::MIME; 
use Email::Sender::Transport::SMTP; 
use Email::Sender::Simple qw(sendmail); 
use Archive::Zip qw(:ERROR_CODES :CONSTANTS); 
use IO::All; 

my $message = 
     Email::MIME->create(
     header_str => [ 
    From => $sender, 
    To  => $recipient, 
    Subject => $subject, 
    ], 
      attributes => { 
       filename  => $filename, 
       content_type => 'application/zip', 
       disposition => 'attachment', 
       name   => $filename, 
      }, 
      body => io($fileToSend)->binary->all, 
      #body => io($fileToSend)->all, 
    ); 
+0

भेजे और प्राप्त फ़ाइलों के बीच क्या अंतर है? – Tim

+0

प्राप्त की गई ज़िप फ़ाइल भेजी गई ज़िप्ड (822 केबी बनाम 893 केबी) से थोड़ा छोटी है। यही कारण है कि मुझे समस्या है IO() समस्या होने के लिए। – Dodd10x

+0

यह जटिल विधि क्यों है, बस संलग्नक के रूप में फ़ाइल भेजें? – netawater

उत्तर

5

अंत में समस्या मिली। इस लाइन को जोड़ना चाल था।

$message->encoding_set('base64'); 
0
my $transport = Email::Sender::Transport::SMTP->new({ 
        host => $smtpserver, 
        port => $smtpport, 
        sasl_username => $smtpuser, 
        sasl_password => $smtppassword, 
        ssl => 'starttls'}); 

Email::Stuffer->from('[email protected]') 
      ->to('[email protected]') 
      ->text_body('hello') 
      ->attach_file ('zipfile') 
      ->transport($transport) 
      ->send();