Как я могу отправить содержание файла как электронная почта в Perl?

Это не возможно (Это возможно в WPF с {Binding RelativeSource={RelativeSource Self}}, но Silverlight более ограничена.

необходимо сделать это через код.

5
задан brian d foy 25 August 2009 в 23:19
поделиться

4 ответа

Вы можете просто проглотить содержимое файла и использовать его, как любую другую строку:

 open my $fh, '<', 'file.txt' or die "Ouch: $!\n";

 my $text = do {
   local $/;
   <$fh>
 };

 close $fh or die "Ugh: $!\n";
 print $text,"\n";
4
ответ дан 18 December 2019 в 08:29
поделиться

Я использую MIME :: Lite , это сценарий cron, который я использую для своих ночных резервных копий:

$msg = MIME::Lite->new(
  From    => 'backup-bot@mydomain.com',
  To      => 'test@example.com',
  Bcc     => 'test@example.com',
  Subject => "DB.tgz Nightly MySQL backup!",
  Type    => "text/plain",
  Data    => "Your backup sir.");

$msg->attach(Type=> "application/x-tar",
             Path =>"/var/some/folder/DB_Dump/DB.tgz",
             Filename =>"DB.tgz");

$msg->send;
11
ответ дан 18 December 2019 в 08:29
поделиться

Что такое вы используете для отправки электронной почты? Я использую MIME :: Lite . и вы можете использовать это, чтобы просто прикрепить файл.

В противном случае вы бы просто открыли журнал, прочитали его построчно (или использовали File :: Slurp ) и выгрузили содержимое файла в электронное письмо.

4
ответ дан 18 December 2019 в 08:29
поделиться

Вы можете открыть файл в Perl несколькими способами.

То, что вам нужно знать, описано в perl -f open

Вот пример:

my $file = 'filename.txt';
open my $ifh, '<', $file
  or die "Cannot open '$file' for reading: $!";
local $/ = '';
my $contents = <$ifh>;
close( $ifh );

Теперь просто отправьте электронное письмо по адресу $ contents .

Я не знаю, как вы отправляете электронную почту, но я часто использую следующий способ:

# Install these modules from CPAN:
use Mail::Sendmail;
use MIME::Base64;

sendmail(
  To                          => 'you@your-domain.com',
  From                        => 'Friendly Name <friendly@server.com>',
  'reply-to'                  => 'no-reply@server.com',
  Subject                     => 'That file you wanted',

  # If you are sending an HTML file, use 'text/html' instead of 'text/plain':
  'content-type'              => 'text/plain',
  'content-transfer-encoding' => 'base64',
  Message                     => encode_base64( $contents ),
);
0
ответ дан 18 December 2019 в 08:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: