Agora para nós podermos "brincar" mais com os emails em
Perl, vamos usar um lib local dos sistemas Gnu/Linux: /usr/lib/sendmail.
Obs.: As 3 sources que vou usar não são minhas, porém vou modificá-las na explicação e deixarei igual a original na source completa.
Roteiro:
- Enviar email com anexo;
- E-mails em massa;
- Enviando emails anonimamente.
Enviar email com anexo
Interpretador & módulos:
#!/usr/bin/perl
use MIME::Entity; #este é um módulo de codificação que neste script será usado com base 64
Cabeçalho:
$top = build MIME::Entity From => 'Root <root>',
To => 'user@host', #aqui é o destinatário
Subject => "título/assunto", #o título/assunto do email
Data => $txt1; #aqui é a mensagem, que neste caso está na variável txt1
Variável:
$txt1 = “esta não é a mensagem original”; #aqui no caso seria a mensagem que o programa vai mandar
Anexo:
#Aqui começa o anexo
$top->attach(
Name => “nome.extensão”, #aqui você vai por o nome e a extensão do arquivo
Path => “/diretório/nome.extensão”, #caminho do arquivo
# Se o anexo for compactado
#Type => “application/x-gtar”, #se o arquivo for compactado usará /x-gtar, perceba que o type está com um "#" antes. É porque o arquivo não está compactado, o "#" torna o comando inútil
Encoding => “base64″ #a codificação do arquivo
);
Enviando:
# Agente MTA do seu servidor
open(MAIL,”| /usr/lib/sendmail -t”); #chama a lib citada no começo
$top->print(\*MAIL);
close(MAIL);
Código completo:
#!/usr/bin/perl
use MIME::Entity;
$txt1 = “O servidor de backup realizou o backup com sucesso,em anexo o script de backup !”;
$top = build MIME::Entity From => ‘Root <root>’,
To => ’suporte@domain’,
Subject => “[Backup-Empresa] Confirmação do Backup “,
Data => $txt1;
$top->attach(
Name => “algumacoisaExemplo.sh”,
Path => “/diretório/algumacoisaExemplo.sh”,
# Se o anexo for compactado
#Type => “application/x-gtar”,
Encoding => “base64″
);
open(MAIL,”| /usr/lib/sendmail -t”);
$top->print(\*MAIL);
close(MAIL);
No caso ele simulou o backup dos arquivos de uma empresa, o que é uma ótima função para este script.