Email :: Stuffer не может отправить обычное письмо без вложенного файла - PullRequest
1 голос
/ 23 января 2020

Система: Ubuntu 18.04 LTS с Perl 5.26.1. @ grinnz

Email :: Stuffer - новинка для меня, и примеров в документах было немного. Я провел несколько часов, пробуя разные вещи, занимаясь поиском в поисковых системах и поиском тем на других форумах, подобных этому. Я создаю свой объект электронной почты следующим образом:

my $email = Email::Stuffer
        ->text_body($body)
        ->subject($subjparam)
        ->from($from)# or use ->from($email1, $email2...)
        ->transport(Email::Sender::Transport::SMTP->new({
            host => $smtpserver,
            port => $smtpport,
            username => $smtpuser,
            password => $smtppw,
        }));

Затем отправляю его так:

try {
    $email->send; # Send email
}
catch {
    $s="$procname ERROR: Could not send email via $module\n";
    if ($^E)
        {
        $s.="ERROR from \$^E: ".$^E."\n";
        }
    if ($@)
        {
        $s.="ERROR from Perl: ".$@."\n";
        }
    if ($!)
        {
        $s.="ERROR from c lib: ".$!."\n";
        }
    debugprg($s);
    exit 1;
};

Но каждый раз, когда я получаю сообщение об ошибке во время выполнения, «файл не найден» $email->send. Кажется, я не могу найти какой-либо другой ошибки в Email :: Stuffer, который использует Email: MIME.

Я также не вижу объектов ошибок в Email :: MIME.

Кто-нибудь знает, почему я получаю ошибку? Я вообще не прикрепляю файл.

Спасибо за любую помощь. :)

РЕДАКТИРОВАТЬ: Вот моя вся программа испытаний. Вам нужно будет указать информацию о вашем SMTP-сервере.

#!/usr/bin/perl
=pod

Put docs here.

=cut


use warnings;
use strict;
use Email::Stuffer;
use Email::Sender::Transport::SMTP ();

require '/home/chuck/perl/util2.pl';
my $VER="v1.00";
my $s='';
my $procname='';
my $prefixsp='';
my $module='Email::Stuffer';

my ($smtpserver,$smtpport,$smtpuser,$smtppw)=getconfigg(); # Get config from INI file

# Make email.
my $from='croberts@gilsongraphics.com';
my $to='croberts@gilsongraphics.com';
my $subjparam='Test email from Perl';
my @bodyarr=("This is a test email.");
my $body=join(' ', @bodyarr);
my $progdir='/home/chuck/perl/';
my $smtplogfn=$progdir.'logsmtp2020.txt';

# Do it raw.
my $email = Email::Stuffer
        ->to($to)
        ->text_body($body)
        ->subject($subjparam)
        ->from($from)# or use ->from($email1, $email2...)
        ->transport(Email::Sender::Transport::SMTP->new('SMTP', {
            host => $smtpserver,
            port => $smtpport,
            username => $smtpuser,
            password => $smtppw,
            }));
if ((not defined $email) ) # Check for $email creation error.
    {
    $s=$prefixsp."$procname ERROR_undef_email: Could not create new email: $_";
    debugprg($s);
    return;
    }

$email->send;
if ($@)
    {
    $s="$procname ERROR_senderror: Could not send email via $module\n";
    if ($@)
        {
        $s.="ERROR from Perl: ".$@."\n";
        }
    print "$s\n";
    exit 1;
}


exit; # Exit main pgm.
...