CTKlib

 view release on metacpan or  search on metacpan

lib/CTK/Util.pm  view on Meta::CPAN

}
sub getfilelist {
    return [map {$_->[1]} scanfiles(@_)];
}
sub getlist { goto &getfilelist }
sub getdirlist {
    return [map {$_->[1]} scandirs(@_)];
}

#
# Extended
#

sub send_mail { # MIME::Lite interface only
    my @args = @_;
    my ($to, $cc, $from, $subject, $message, $type,
     $sendmail, $charset, $smtp, $smtpuser, $smtppass, $att, $smtpargs) =
    read_attributes([
        ['TO','ADDRESS'],
        ['COPY','CC'],
        ['FROM'],
        ['SUBJECT','SUBJ','SBJ'],
        ['MESSAGE','CONTENT','TEXT'],
        ['TYPE','CONTENT-TYPE','CONTENT_TYPE'],
        ['PROGRAM','SENDMAIL',],
        ['CHARSET','CHARACTER_SET'],
        ['SMTP','MAILSERVER','SERVER','HOST'],
        ['SMTPLOGIN','AUTHLOGIN','LOGIN','SMTPUSER','AUTHUSER','USER'],
        ['SMTPPASSWORD','AUTHPASSWORD','PASSWORD','SMTPPASS','AUTHPASS','PASS'],
        ['ATTACH','ATTACHE','ATT'],
        ['SMTPARGS','ARGS','ARGUMENTS'],
    ],@args) if defined $args[0];

    $to           //= '';
    $cc           //= '';
    $from         //= '';
    $subject      //= '';
    $message      //= '';
    $type         //= "text/plain";
    $sendmail     //= '';
    $charset      //= "utf-8";
    $smtp         //= '';
    $smtpuser     //= '';
    $smtppass     //= '';

    if ($charset !~ /utf\-?8/i) {
        $subject = to_utf8($subject, $charset);
        $message = to_utf8($message, $charset);
    }

    # Object
    my $msg = MIME::Lite->new(
        From     => $from,
        To       => $to,
        $cc ? (Cc => $cc) : (),
        Subject  => $subject, # to_base64($subject),
        Type     => $type,
        Encoding => 'base64',
        Data     => Encode::encode('UTF-8', $message)
    );
    $msg->attr('content-type.charset' => 'UTF-8');
    $msg->attr('Content-Transfer-Encoding' => 'base64');

    # Attaches
    if ($att) {
        if (ref($att) =~ /HASH/i) {
            $msg->attach(%$att);
        } elsif  (ref($att) =~ /ARRAY/i) {
            foreach (@$att) {
                if (ref($_) =~ /HASH/i) {
                    $msg->attach(%$_);
                } else {
                    carp("Can't attach scalar data. Please use hash structure");
                }
            }
        } else {
            carp("Can't attach scalar data. Please use hash structure or array of hashes");
        }
    }

    # Sending
    my $sendstat;
    my %tmp = ($smtpargs && ref($smtpargs) eq 'HASH') ? %$smtpargs : ();
    if ($smtp) { # If SMTP
        $tmp{AuthUser} //= $smtpuser if length($smtpuser);
        $tmp{AuthPass} //= $smtppass if length($smtppass);
        eval { $sendstat = $msg->send('smtp', $smtp, %tmp); };
        carp(sprintf("sendmail (smtp://%s): %s", $smtp, $@)) if $@;
    } elsif ($sendmail && -e $sendmail) { # Try sendmail program
        eval { $sendstat = $msg->send('sendmail', $sendmail); };
        carp(sprintf("sendmail (%s): %s", $sendmail, $@)) if $@;
    } else { # Try without args
        eval { $sendstat = $msg->send(); };
        carp(sprintf("sendmail (default): %s", $@)) if $@;
    }
    return $sendstat ? 1 : 0;
}
sub sendmail { goto &send_mail }
sub ftp {
    #my %ftpct = (
    #    ftphost     => '192.168.1.1',
    #    ftpuser     => 'login',
    #    ftppassword => 'password',
    #    ftpdir      => '~/',
    #    voidfile    => './void.txt',
    #    #ftpattr    => {},
    #);
    #my $rfiles = CTK::ftp(\%ftpct, 'ls');
    #my @remotefiles = $rfiles ? grep {!(/^\./)} @$rfiles : ();
    #ftp(\%ftpct, 'put', catfile($dirin,$file), $file);

    my $ftpconnect  = shift || {};
    my $cmd         = shift || '';
    my $lfile       = shift || '';
    my $rfile       = shift || '';

    unless ($ftpconnect && (ref($ftpconnect) eq 'HASH') && $ftpconnect->{ftphost}) {
        carp("Connect's data missing");
        return undef;
    }



( run in 3.368 seconds using v1.01-cache-2.11-cpan-524268b4103 )